From 6a05a182b1771ad5401ffc60b2c50fc2ebfcaa3b Mon Sep 17 00:00:00 2001 From: Fredrik Karlsson Date: Thu, 6 Dec 2018 16:55:27 +0200 Subject: Reproduce overflow crash --- CMakeLists.txt | 1 + platform/ios/app/Info.plist | 28 +- platform/ios/app/MBXAppDelegate.m | 8 + platform/ios/app/OverflowViewController.swift | 82 + platform/ios/app/iosapp-Bridging-Header.h | 4 + platform/ios/app/route.json | 2106 ++++++++++++++++++++ platform/ios/ios.xcodeproj/project.pbxproj | 62 +- .../xcshareddata/xcschemes/CI.xcscheme | 8 +- .../xcshareddata/xcschemes/iosapp.xcscheme | 10 +- .../xcdebugger/Breakpoints_v2.xcbkptlist | 2 +- platform/ios/test/simple-route.json | 18 + vendor/geojson-vt-cpp.cmake | 2 +- 12 files changed, 2290 insertions(+), 41 deletions(-) create mode 100644 platform/ios/app/OverflowViewController.swift create mode 100644 platform/ios/app/iosapp-Bridging-Header.h create mode 100644 platform/ios/app/route.json create mode 100644 platform/ios/test/simple-route.json diff --git a/CMakeLists.txt b/CMakeLists.txt index fb00412256..7dabd62a4c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -199,6 +199,7 @@ endif() if(CMAKE_GENERATOR STREQUAL "Xcode") set_xcconfig_target_properties(mbgl-core) + target_include_directories(mbgl-core PRIVATE vendor/geojson-vt-cpp/include) set_xcconfig_target_properties(mbgl-filesource) file(GENERATE OUTPUT "${CMAKE_BINARY_DIR}/config.xcconfig" diff --git a/platform/ios/app/Info.plist b/platform/ios/app/Info.plist index ea70ecd629..0a9518abdc 100644 --- a/platform/ios/app/Info.plist +++ b/platform/ios/app/Info.plist @@ -28,16 +28,25 @@ PingFang TC NSHumanReadableCopyright © 2014–2018 Mapbox + NSLocationAlwaysAndWhenInUseUsageDescription + 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. NSLocationAlwaysUsageDescription 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. NSLocationWhenInUseUsageDescription The map will display your location. - NSLocationAlwaysAndWhenInUseUsageDescription - 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. + UIApplicationShortcutItems + + + UIApplicationShortcutItemIconFile + settings + UIApplicationShortcutItemTitle + Settings + UIApplicationShortcutItemType + $(PRODUCT_BUNDLE_IDENTIFIER).settings + + UILaunchStoryboardName LaunchScreen - UIMainStoryboardFile - Main UIRequiredDeviceCapabilities armv7 @@ -55,16 +64,5 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - UIApplicationShortcutItems - - - UIApplicationShortcutItemTitle - Settings - UIApplicationShortcutItemType - $(PRODUCT_BUNDLE_IDENTIFIER).settings - UIApplicationShortcutItemIconFile - settings - - diff --git a/platform/ios/app/MBXAppDelegate.m b/platform/ios/app/MBXAppDelegate.m index 9932356e6e..3617a388ed 100644 --- a/platform/ios/app/MBXAppDelegate.m +++ b/platform/ios/app/MBXAppDelegate.m @@ -1,6 +1,7 @@ #import "MBXAppDelegate.h" #import "MBXViewController.h" #import +#import NSString * const MBXMapboxAccessTokenDefaultsKey = @"MBXMapboxAccessToken"; @@ -25,6 +26,13 @@ NSString * const MBXMapboxAccessTokenDefaultsKey = @"MBXMapboxAccessToken"; [MGLLoggingConfiguration sharedConfiguration].loggingLevel = MGLLoggingLevelFault; #endif } + + self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; + + MBXOverflowViewController *controller = [[MBXOverflowViewController alloc] init]; + + self.window.rootViewController = controller; + [self.window makeKeyAndVisible]; return YES; } diff --git a/platform/ios/app/OverflowViewController.swift b/platform/ios/app/OverflowViewController.swift new file mode 100644 index 0000000000..4430ea1c02 --- /dev/null +++ b/platform/ios/app/OverflowViewController.swift @@ -0,0 +1,82 @@ +import UIKit +import Mapbox + + +@objc(MBXOverflowViewController) +class OverflowViewController: UIViewController { + + var mapView: MGLMapView! + + override func viewDidLoad() { + super.viewDidLoad() + + MGLAccountManager.accessToken = "pk.eyJ1IjoiZnJlZGVyb25pIiwiYSI6ImNqbG1mZ2xkYzEzeTAzcXFyNnp5emJjYWkifQ.DzkRSp9cYtuFLTDvV6_ptQ" + + mapView = MGLMapView(frame: view.bounds) + mapView.delegate = self + view.addSubview(mapView) + + let location = CLLocationCoordinate2D(latitude: 52.412253, longitude: 9.632462) + mapView.centerCoordinate = location + mapView.zoomLevel = 17 + } +} + +extension OverflowViewController: MGLMapViewDelegate { + + func testCoordinates() -> [CLLocationCoordinate2D] { + let coords: [[CLLocationDegrees]] = [[9.6315313, 52.4133574], + [9.6313964, 52.4135014], + [9.6313843, 52.413515700000005], + [9.631266400000001, 52.4136548]] + + return coords.map { CLLocationCoordinate2D(latitude: $0[1], longitude: $0[0]) } + } + + func testCoordinates2() -> [CLLocationCoordinate2D] { +// let coords: [[CLLocationDegrees]] = [[9.6315313, 52.4133574], +// [9.6313964, 52.4135014]] + + let coords: [[CLLocationDegrees]] = [[7, 52], + [8, 52]] + return coords.map { CLLocationCoordinate2D(latitude: $0[1], longitude: $0[0]) } + } + + func mapView(_ mapView: MGLMapView, didFinishLoading style: MGLStyle) { + let jsonPath = Bundle.main.path(forResource: "route", ofType: "json") + let data = try! Data(contentsOf: URL(fileURLWithPath: jsonPath!)) + let allOfflineCoordinates = try! JSONDecoder().decode([Coordinate].self, from: data) + .map { CLLocationCoordinate2D(latitude: $0.latitude, longitude: $0.longitude) } + + + let geojsonCoordinates: [[CLLocationDegrees]] = allOfflineCoordinates.map { return [$0.longitude, $0.latitude] } + + let encoded = try! JSONEncoder().encode(geojsonCoordinates) + let string = String(data: encoded, encoding: .utf8) + let sstring = NSString(string: string!) + + print(sstring) + + let coordinates = testCoordinates2() + + //mapView.centerCoordinate = coordinates.first! + + let polyline = MGLPolylineFeature(coordinates: coordinates, count: UInt(coordinates.count)) + let source = MGLShapeSource(identifier: "route123123", shapes: [polyline], options: [.lineDistanceMetrics: true]) + //let layer = MGLLineStyleLayer(identifier: "route123123", source: source ) + //layer.sourceLayerIdentifier = "route" +// layer.lineWidth = NSExpression( +// format: "mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'exponential', 1.5, %@)", [14: 4, 18: 40]) +// layer.lineGradient = NSExpression( +// format: "mgl_interpolate:withCurveType:parameters:stops:($lineProgress, 'linear', nil, %@)", [0: UIColor.red, 1: UIColor.blue]) +// layer.lineCap = NSExpression(forConstantValue: "round") + + style.addSource(source) + //style.addLayer(layer) + } +} + +struct Coordinate: Codable { + let latitude: Double + let longitude: Double +} diff --git a/platform/ios/app/iosapp-Bridging-Header.h b/platform/ios/app/iosapp-Bridging-Header.h new file mode 100644 index 0000000000..1b2cb5d6d0 --- /dev/null +++ b/platform/ios/app/iosapp-Bridging-Header.h @@ -0,0 +1,4 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// + diff --git a/platform/ios/app/route.json b/platform/ios/app/route.json new file mode 100644 index 0000000000..1216cd228e --- /dev/null +++ b/platform/ios/app/route.json @@ -0,0 +1,2106 @@ +[ + { + "longitude": 9.6321058, + "latitude": 52.4127522 + }, + { + "longitude": 9.6315501, + "latitude": 52.4133373 + }, + { + "longitude": 9.6315313, + "latitude": 52.4133574 + }, + { + "longitude": 9.6313964, + "latitude": 52.4135014 + }, + { + "longitude": 9.6313843, + "latitude": 52.413515700000005 + }, + { + "longitude": 9.631266400000001, + "latitude": 52.4136548 + }, + { + "longitude": 9.631238100000001, + "latitude": 52.4137056 + }, + { + "longitude": 9.631226, + "latitude": 52.413731600000006 + }, + { + "longitude": 9.631206200000001, + "latitude": 52.4137842 + }, + { + "longitude": 9.6311934, + "latitude": 52.4138377 + }, + { + "longitude": 9.631187500000001, + "latitude": 52.4138876 + }, + { + "longitude": 9.6311876, + "latitude": 52.413914600000005 + }, + { + "longitude": 9.631193000000001, + "latitude": 52.4139684 + }, + { + "longitude": 9.6312049, + "latitude": 52.4140225 + }, + { + "longitude": 9.6312242, + "latitude": 52.414075600000004 + }, + { + "longitude": 9.6312301, + "latitude": 52.41408860000001 + }, + { + "longitude": 9.6312359, + "latitude": 52.4141016 + }, + { + "longitude": 9.631267600000001, + "latitude": 52.4141563 + }, + { + "longitude": 9.6313084, + "latitude": 52.4142103 + }, + { + "longitude": 9.6313574, + "latitude": 52.4142626 + }, + { + "longitude": 9.6314138, + "latitude": 52.4143119 + }, + { + "longitude": 9.631476600000001, + "latitude": 52.4143575 + }, + { + "longitude": 9.6315456, + "latitude": 52.4143996 + }, + { + "longitude": 9.6316213, + "latitude": 52.4144379 + }, + { + "longitude": 9.631701300000001, + "latitude": 52.4144717 + }, + { + "longitude": 9.631786700000001, + "latitude": 52.414501300000005 + }, + { + "longitude": 9.631875500000001, + "latitude": 52.414526900000006 + }, + { + "longitude": 9.6319248, + "latitude": 52.4145398 + }, + { + "longitude": 9.632015500000001, + "latitude": 52.4145611 + }, + { + "longitude": 9.632783400000001, + "latitude": 52.4147344 + }, + { + "longitude": 9.6336321, + "latitude": 52.4149259 + }, + { + "longitude": 9.633824500000001, + "latitude": 52.4149693 + }, + { + "longitude": 9.6340862, + "latitude": 52.4150323 + }, + { + "longitude": 9.6341675, + "latitude": 52.4150526 + }, + { + "longitude": 9.6342465, + "latitude": 52.4150763 + }, + { + "longitude": 9.634323700000001, + "latitude": 52.4151037 + }, + { + "longitude": 9.6343958, + "latitude": 52.415134300000005 + }, + { + "longitude": 9.634464300000001, + "latitude": 52.415168400000006 + }, + { + "longitude": 9.634558100000001, + "latitude": 52.415223600000004 + }, + { + "longitude": 9.634614000000001, + "latitude": 52.4152652 + }, + { + "longitude": 9.6346646, + "latitude": 52.41530890000001 + }, + { + "longitude": 9.6347076, + "latitude": 52.4153542 + }, + { + "longitude": 9.634765600000001, + "latitude": 52.4154276 + }, + { + "longitude": 9.6348073, + "latitude": 52.4155037 + }, + { + "longitude": 9.6348287, + "latitude": 52.415556800000005 + }, + { + "longitude": 9.634953000000001, + "latitude": 52.415918700000006 + }, + { + "longitude": 9.6351294, + "latitude": 52.41611090000001 + }, + { + "longitude": 9.6351966, + "latitude": 52.4161603 + }, + { + "longitude": 9.6352721, + "latitude": 52.4161793 + }, + { + "longitude": 9.635374200000001, + "latitude": 52.4161784 + }, + { + "longitude": 9.635609800000001, + "latitude": 52.4161537 + }, + { + "longitude": 9.635959900000001, + "latitude": 52.4159476 + }, + { + "longitude": 9.6361553, + "latitude": 52.415880200000004 + }, + { + "longitude": 9.636303400000001, + "latitude": 52.415848800000006 + }, + { + "longitude": 9.6365605, + "latitude": 52.4158326 + }, + { + "longitude": 9.6367521, + "latitude": 52.4158514 + }, + { + "longitude": 9.6369404, + "latitude": 52.4158843 + }, + { + "longitude": 9.637084100000001, + "latitude": 52.415935700000006 + }, + { + "longitude": 9.6372093, + "latitude": 52.416009100000004 + }, + { + "longitude": 9.6374882, + "latitude": 52.416114900000004 + }, + { + "longitude": 9.6377185, + "latitude": 52.416158200000005 + }, + { + "longitude": 9.6379921, + "latitude": 52.416160500000004 + }, + { + "longitude": 9.6384101, + "latitude": 52.4160776 + }, + { + "longitude": 9.6390135, + "latitude": 52.4157154 + }, + { + "longitude": 9.6395285, + "latitude": 52.4154629 + }, + { + "longitude": 9.640111000000001, + "latitude": 52.41524750000001 + }, + { + "longitude": 9.6417143, + "latitude": 52.4147358 + }, + { + "longitude": 9.6419922, + "latitude": 52.41465590000001 + }, + { + "longitude": 9.642172200000001, + "latitude": 52.4146092 + }, + { + "longitude": 9.6424202, + "latitude": 52.4145429 + }, + { + "longitude": 9.6426806, + "latitude": 52.4144695 + }, + { + "longitude": 9.643054900000001, + "latitude": 52.414386500000006 + }, + { + "longitude": 9.643886400000001, + "latitude": 52.41423 + }, + { + "longitude": 9.6447155, + "latitude": 52.4141075 + }, + { + "longitude": 9.6454293, + "latitude": 52.413996000000004 + }, + { + "longitude": 9.6460826, + "latitude": 52.4138492 + }, + { + "longitude": 9.646618700000001, + "latitude": 52.4136699 + }, + { + "longitude": 9.646828900000001, + "latitude": 52.413582100000006 + }, + { + "longitude": 9.647057400000001, + "latitude": 52.413494 + }, + { + "longitude": 9.647077300000001, + "latitude": 52.413482 + }, + { + "longitude": 9.647404700000001, + "latitude": 52.4133112 + }, + { + "longitude": 9.647778200000001, + "latitude": 52.413114400000005 + }, + { + "longitude": 9.6483103, + "latitude": 52.4127426 + }, + { + "longitude": 9.6488615, + "latitude": 52.412328200000005 + }, + { + "longitude": 9.649191700000001, + "latitude": 52.412085000000005 + }, + { + "longitude": 9.6494326, + "latitude": 52.4119266 + }, + { + "longitude": 9.6496788, + "latitude": 52.41176230000001 + }, + { + "longitude": 9.6503352, + "latitude": 52.41127770000001 + }, + { + "longitude": 9.6512426, + "latitude": 52.410604400000004 + }, + { + "longitude": 9.6535952, + "latitude": 52.40886020000001 + }, + { + "longitude": 9.6540087, + "latitude": 52.408541500000005 + }, + { + "longitude": 9.654112000000001, + "latitude": 52.4084337 + }, + { + "longitude": 9.654189200000001, + "latitude": 52.408343200000004 + }, + { + "longitude": 9.654313100000001, + "latitude": 52.408182100000005 + }, + { + "longitude": 9.6544314, + "latitude": 52.4079855 + }, + { + "longitude": 9.6545243, + "latitude": 52.40779980000001 + }, + { + "longitude": 9.654579400000001, + "latitude": 52.4076718 + }, + { + "longitude": 9.6547402, + "latitude": 52.4074193 + }, + { + "longitude": 9.654876600000001, + "latitude": 52.407234 + }, + { + "longitude": 9.6550326, + "latitude": 52.40704950000001 + }, + { + "longitude": 9.6552059, + "latitude": 52.40688230000001 + }, + { + "longitude": 9.655405700000001, + "latitude": 52.4067213 + }, + { + "longitude": 9.655705600000001, + "latitude": 52.4065072 + }, + { + "longitude": 9.6564154, + "latitude": 52.406063800000005 + }, + { + "longitude": 9.6570602, + "latitude": 52.405645 + }, + { + "longitude": 9.657479200000001, + "latitude": 52.4053477 + }, + { + "longitude": 9.6578908, + "latitude": 52.4050469 + }, + { + "longitude": 9.6586742, + "latitude": 52.4044317 + }, + { + "longitude": 9.659376400000001, + "latitude": 52.4038326 + }, + { + "longitude": 9.6600625, + "latitude": 52.403218700000004 + }, + { + "longitude": 9.6607485, + "latitude": 52.402591400000006 + }, + { + "longitude": 9.661420600000001, + "latitude": 52.401966400000006 + }, + { + "longitude": 9.662212100000001, + "latitude": 52.401256100000005 + }, + { + "longitude": 9.6630207, + "latitude": 52.4005571 + }, + { + "longitude": 9.663685500000001, + "latitude": 52.4000258 + }, + { + "longitude": 9.663892, + "latitude": 52.399870400000005 + }, + { + "longitude": 9.6643893, + "latitude": 52.399514200000006 + }, + { + "longitude": 9.6649291, + "latitude": 52.3991461 + }, + { + "longitude": 9.6654402, + "latitude": 52.3988298 + }, + { + "longitude": 9.6659628, + "latitude": 52.398526700000005 + }, + { + "longitude": 9.6669423, + "latitude": 52.3980199 + }, + { + "longitude": 9.6675254, + "latitude": 52.3977535 + }, + { + "longitude": 9.6681225, + "latitude": 52.397494 + }, + { + "longitude": 9.6687046, + "latitude": 52.397268700000005 + }, + { + "longitude": 9.6693137, + "latitude": 52.3970501 + }, + { + "longitude": 9.6712451, + "latitude": 52.396428300000004 + }, + { + "longitude": 9.6718873, + "latitude": 52.3962056 + }, + { + "longitude": 9.6724768, + "latitude": 52.3959721 + }, + { + "longitude": 9.6730993, + "latitude": 52.395698800000005 + }, + { + "longitude": 9.6737038, + "latitude": 52.395405000000004 + }, + { + "longitude": 9.6742716, + "latitude": 52.3951033 + }, + { + "longitude": 9.67481, + "latitude": 52.39479540000001 + }, + { + "longitude": 9.675236400000001, + "latitude": 52.39453150000001 + }, + { + "longitude": 9.6756445, + "latitude": 52.3942594 + }, + { + "longitude": 9.6763974, + "latitude": 52.3937055 + }, + { + "longitude": 9.6770382, + "latitude": 52.3932275 + }, + { + "longitude": 9.6777166, + "latitude": 52.392759600000005 + }, + { + "longitude": 9.6783371, + "latitude": 52.3923921 + }, + { + "longitude": 9.6790208, + "latitude": 52.392059800000006 + }, + { + "longitude": 9.6797082, + "latitude": 52.391782600000006 + }, + { + "longitude": 9.680507, + "latitude": 52.391508 + }, + { + "longitude": 9.681325000000001, + "latitude": 52.391281400000004 + }, + { + "longitude": 9.6822016, + "latitude": 52.3910764 + }, + { + "longitude": 9.68321, + "latitude": 52.390860800000006 + }, + { + "longitude": 9.6842036, + "latitude": 52.3906295 + }, + { + "longitude": 9.6846367, + "latitude": 52.390511700000005 + }, + { + "longitude": 9.6851014, + "latitude": 52.3903703 + }, + { + "longitude": 9.6853127, + "latitude": 52.39029420000001 + }, + { + "longitude": 9.6857439, + "latitude": 52.390137300000006 + }, + { + "longitude": 9.6864326, + "latitude": 52.3898232 + }, + { + "longitude": 9.687006100000001, + "latitude": 52.389510400000006 + }, + { + "longitude": 9.687471, + "latitude": 52.389211200000005 + }, + { + "longitude": 9.6879665, + "latitude": 52.3888394 + }, + { + "longitude": 9.6882132, + "latitude": 52.3886296 + }, + { + "longitude": 9.6884399, + "latitude": 52.388411100000006 + }, + { + "longitude": 9.6885832, + "latitude": 52.388273000000005 + }, + { + "longitude": 9.6887317, + "latitude": 52.38812 + }, + { + "longitude": 9.6888497, + "latitude": 52.38797700000001 + }, + { + "longitude": 9.688979, + "latitude": 52.387813400000006 + }, + { + "longitude": 9.689207300000001, + "latitude": 52.387467400000006 + }, + { + "longitude": 9.689430900000001, + "latitude": 52.387095900000006 + }, + { + "longitude": 9.6896418, + "latitude": 52.3866797 + }, + { + "longitude": 9.6899431, + "latitude": 52.386051 + }, + { + "longitude": 9.6907776, + "latitude": 52.3841794 + }, + { + "longitude": 9.690803500000001, + "latitude": 52.3841278 + }, + { + "longitude": 9.6912081, + "latitude": 52.38353 + }, + { + "longitude": 9.6917112, + "latitude": 52.382887800000006 + }, + { + "longitude": 9.692271, + "latitude": 52.382379 + }, + { + "longitude": 9.692936300000001, + "latitude": 52.381857200000006 + }, + { + "longitude": 9.693404800000001, + "latitude": 52.381553700000005 + }, + { + "longitude": 9.6936551, + "latitude": 52.3814062 + }, + { + "longitude": 9.6943362, + "latitude": 52.381018100000006 + }, + { + "longitude": 9.6951592, + "latitude": 52.380570500000005 + }, + { + "longitude": 9.6954779, + "latitude": 52.3803592 + }, + { + "longitude": 9.6956334, + "latitude": 52.3802219 + }, + { + "longitude": 9.695878500000001, + "latitude": 52.3800165 + }, + { + "longitude": 9.6960505, + "latitude": 52.379847700000006 + }, + { + "longitude": 9.6961291, + "latitude": 52.3797706 + }, + { + "longitude": 9.6962528, + "latitude": 52.37963310000001 + }, + { + "longitude": 9.6965153, + "latitude": 52.3793043 + }, + { + "longitude": 9.6967166, + "latitude": 52.378979400000006 + }, + { + "longitude": 9.696852, + "latitude": 52.3787225 + }, + { + "longitude": 9.6972904, + "latitude": 52.3776639 + }, + { + "longitude": 9.6973117, + "latitude": 52.3776084 + }, + { + "longitude": 9.697476, + "latitude": 52.377200900000005 + }, + { + "longitude": 9.697912, + "latitude": 52.3761907 + }, + { + "longitude": 9.698107100000001, + "latitude": 52.3757743 + }, + { + "longitude": 9.6984591, + "latitude": 52.375078900000005 + }, + { + "longitude": 9.6985577, + "latitude": 52.374884300000005 + }, + { + "longitude": 9.6988704, + "latitude": 52.374266500000004 + }, + { + "longitude": 9.6990738, + "latitude": 52.373870200000006 + }, + { + "longitude": 9.6991732, + "latitude": 52.373698000000005 + }, + { + "longitude": 9.6994143, + "latitude": 52.373269 + }, + { + "longitude": 9.6997526, + "latitude": 52.372698 + }, + { + "longitude": 9.699921400000001, + "latitude": 52.3723758 + }, + { + "longitude": 9.700097900000001, + "latitude": 52.372086200000005 + }, + { + "longitude": 9.700313900000001, + "latitude": 52.3717417 + }, + { + "longitude": 9.7006069, + "latitude": 52.371291500000005 + }, + { + "longitude": 9.7007843, + "latitude": 52.371064100000005 + }, + { + "longitude": 9.70097, + "latitude": 52.370785000000005 + }, + { + "longitude": 9.7015229, + "latitude": 52.3699877 + }, + { + "longitude": 9.7017536, + "latitude": 52.3696496 + }, + { + "longitude": 9.701871500000001, + "latitude": 52.369484 + }, + { + "longitude": 9.701980200000001, + "latitude": 52.369325200000006 + }, + { + "longitude": 9.7026719, + "latitude": 52.368315 + }, + { + "longitude": 9.703886800000001, + "latitude": 52.366574400000005 + }, + { + "longitude": 9.7039822, + "latitude": 52.366444800000004 + }, + { + "longitude": 9.704156000000001, + "latitude": 52.3662329 + }, + { + "longitude": 9.704350100000001, + "latitude": 52.366020600000006 + }, + { + "longitude": 9.7045844, + "latitude": 52.3657819 + }, + { + "longitude": 9.7048717, + "latitude": 52.3655216 + }, + { + "longitude": 9.705237400000001, + "latitude": 52.365221700000006 + }, + { + "longitude": 9.705461000000001, + "latitude": 52.3650578 + }, + { + "longitude": 9.7057053, + "latitude": 52.36489460000001 + }, + { + "longitude": 9.7059549, + "latitude": 52.364732200000006 + }, + { + "longitude": 9.7062104, + "latitude": 52.3645816 + }, + { + "longitude": 9.706508600000001, + "latitude": 52.364423800000004 + }, + { + "longitude": 9.7073111, + "latitude": 52.3640333 + }, + { + "longitude": 9.7077506, + "latitude": 52.363838300000005 + }, + { + "longitude": 9.708055400000001, + "latitude": 52.3637097 + }, + { + "longitude": 9.7084749, + "latitude": 52.3635517 + }, + { + "longitude": 9.7088721, + "latitude": 52.36340980000001 + }, + { + "longitude": 9.7091311, + "latitude": 52.363328200000005 + }, + { + "longitude": 9.7094131, + "latitude": 52.363244200000004 + }, + { + "longitude": 9.7096803, + "latitude": 52.363169000000006 + }, + { + "longitude": 9.7102609, + "latitude": 52.363025 + }, + { + "longitude": 9.7109317, + "latitude": 52.3628822 + }, + { + "longitude": 9.7115025, + "latitude": 52.362765700000004 + }, + { + "longitude": 9.71171, + "latitude": 52.362719500000004 + }, + { + "longitude": 9.711956200000001, + "latitude": 52.362657500000005 + }, + { + "longitude": 9.7121552, + "latitude": 52.3626 + }, + { + "longitude": 9.7123883, + "latitude": 52.3625301 + }, + { + "longitude": 9.712536400000001, + "latitude": 52.3624828 + }, + { + "longitude": 9.7126874, + "latitude": 52.362428900000005 + }, + { + "longitude": 9.712868400000001, + "latitude": 52.362353500000005 + }, + { + "longitude": 9.7130059, + "latitude": 52.362282900000004 + }, + { + "longitude": 9.713108700000001, + "latitude": 52.3622201 + }, + { + "longitude": 9.713192600000001, + "latitude": 52.3621555 + }, + { + "longitude": 9.7132684, + "latitude": 52.362084200000005 + }, + { + "longitude": 9.713353600000001, + "latitude": 52.361986200000004 + }, + { + "longitude": 9.7134248, + "latitude": 52.361879 + }, + { + "longitude": 9.713566400000001, + "latitude": 52.3616316 + }, + { + "longitude": 9.7136175, + "latitude": 52.3615319 + }, + { + "longitude": 9.7136747, + "latitude": 52.361445800000006 + }, + { + "longitude": 9.7137273, + "latitude": 52.361386 + }, + { + "longitude": 9.713792900000001, + "latitude": 52.361332000000004 + }, + { + "longitude": 9.713888, + "latitude": 52.3612705 + }, + { + "longitude": 9.7139749, + "latitude": 52.3612224 + }, + { + "longitude": 9.7141591, + "latitude": 52.3611366 + }, + { + "longitude": 9.7143615, + "latitude": 52.36106830000001 + }, + { + "longitude": 9.7146814, + "latitude": 52.3609614 + }, + { + "longitude": 9.714753100000001, + "latitude": 52.3609218 + }, + { + "longitude": 9.7148885, + "latitude": 52.360800700000006 + }, + { + "longitude": 9.7149941, + "latitude": 52.3606555 + }, + { + "longitude": 9.715744800000001, + "latitude": 52.359156600000006 + }, + { + "longitude": 9.7158023, + "latitude": 52.359027100000006 + }, + { + "longitude": 9.7160054, + "latitude": 52.3585755 + }, + { + "longitude": 9.716329, + "latitude": 52.3578649 + }, + { + "longitude": 9.716461500000001, + "latitude": 52.3575924 + }, + { + "longitude": 9.7169823, + "latitude": 52.356535300000004 + }, + { + "longitude": 9.717027400000001, + "latitude": 52.3564486 + }, + { + "longitude": 9.7171699, + "latitude": 52.356197800000004 + }, + { + "longitude": 9.7173285, + "latitude": 52.3559356 + }, + { + "longitude": 9.7175024, + "latitude": 52.3556692 + }, + { + "longitude": 9.7176639, + "latitude": 52.3554484 + }, + { + "longitude": 9.717801900000001, + "latitude": 52.3552802 + }, + { + "longitude": 9.717958300000001, + "latitude": 52.3550965 + }, + { + "longitude": 9.7180886, + "latitude": 52.354954600000006 + }, + { + "longitude": 9.7181847, + "latitude": 52.3548528 + }, + { + "longitude": 9.7186629, + "latitude": 52.354325700000004 + }, + { + "longitude": 9.7188469, + "latitude": 52.354093600000006 + }, + { + "longitude": 9.718958, + "latitude": 52.353937300000005 + }, + { + "longitude": 9.7190664, + "latitude": 52.3537729 + }, + { + "longitude": 9.7191582, + "latitude": 52.3536128 + }, + { + "longitude": 9.719251100000001, + "latitude": 52.353419 + }, + { + "longitude": 9.7193514, + "latitude": 52.3531716 + }, + { + "longitude": 9.719397200000001, + "latitude": 52.35301930000001 + }, + { + "longitude": 9.7194287, + "latitude": 52.352868300000004 + }, + { + "longitude": 9.7194596, + "latitude": 52.3526606 + }, + { + "longitude": 9.719476, + "latitude": 52.352469400000004 + }, + { + "longitude": 9.7194757, + "latitude": 52.352288 + }, + { + "longitude": 9.719473616418774, + "latitude": 52.3522332534254 + }, + { + "longitude": 9.7194648, + "latitude": 52.3520016 + }, + { + "longitude": 9.7194182, + "latitude": 52.351644900000004 + }, + { + "longitude": 9.719397200000001, + "latitude": 52.3514215 + }, + { + "longitude": 9.719386, + "latitude": 52.351083300000006 + }, + { + "longitude": 9.719275300000001, + "latitude": 52.350245300000005 + }, + { + "longitude": 9.7192278, + "latitude": 52.3496528 + }, + { + "longitude": 9.719225400000001, + "latitude": 52.3494103 + }, + { + "longitude": 9.719227100000001, + "latitude": 52.3492892 + }, + { + "longitude": 9.7191828, + "latitude": 52.348671800000005 + }, + { + "longitude": 9.7191414, + "latitude": 52.3479377 + }, + { + "longitude": 9.7191246, + "latitude": 52.347531700000005 + }, + { + "longitude": 9.719107300000001, + "latitude": 52.3472877 + }, + { + "longitude": 9.7191057, + "latitude": 52.34719260000001 + }, + { + "longitude": 9.719099100000001, + "latitude": 52.34708740000001 + }, + { + "longitude": 9.7190726, + "latitude": 52.3470048 + }, + { + "longitude": 9.7190408, + "latitude": 52.3469428 + }, + { + "longitude": 9.7189771, + "latitude": 52.3468534 + }, + { + "longitude": 9.718874900000001, + "latitude": 52.3467476 + }, + { + "longitude": 9.7187142, + "latitude": 52.34659430000001 + }, + { + "longitude": 9.7186492, + "latitude": 52.3465678 + }, + { + "longitude": 9.7185691, + "latitude": 52.346522300000004 + }, + { + "longitude": 9.718503, + "latitude": 52.3464673 + }, + { + "longitude": 9.7184551, + "latitude": 52.3464055 + }, + { + "longitude": 9.7184273, + "latitude": 52.346339400000005 + }, + { + "longitude": 9.7184206, + "latitude": 52.346271200000004 + }, + { + "longitude": 9.7184351, + "latitude": 52.3462034 + }, + { + "longitude": 9.7184705, + "latitude": 52.3461386 + }, + { + "longitude": 9.718525300000001, + "latitude": 52.346079100000004 + }, + { + "longitude": 9.7185976, + "latitude": 52.34602700000001 + }, + { + "longitude": 9.718679400000001, + "latitude": 52.3459865 + }, + { + "longitude": 9.7187823, + "latitude": 52.345952700000005 + }, + { + "longitude": 9.7189276, + "latitude": 52.345862800000006 + }, + { + "longitude": 9.7190895, + "latitude": 52.345761800000005 + }, + { + "longitude": 9.7191737, + "latitude": 52.345696600000004 + }, + { + "longitude": 9.7192489, + "latitude": 52.345627900000004 + }, + { + "longitude": 9.7193118, + "latitude": 52.345550700000004 + }, + { + "longitude": 9.7193734, + "latitude": 52.345459500000004 + }, + { + "longitude": 9.719463300000001, + "latitude": 52.3452926 + }, + { + "longitude": 9.7197864, + "latitude": 52.3446209 + }, + { + "longitude": 9.7199519, + "latitude": 52.344273300000005 + }, + { + "longitude": 9.7203956, + "latitude": 52.3433166 + }, + { + "longitude": 9.720504700000001, + "latitude": 52.343074900000005 + }, + { + "longitude": 9.7206594, + "latitude": 52.342712600000006 + }, + { + "longitude": 9.720792600000001, + "latitude": 52.3423377 + }, + { + "longitude": 9.720863900000001, + "latitude": 52.34207910000001 + }, + { + "longitude": 9.720937900000001, + "latitude": 52.3417435 + }, + { + "longitude": 9.7209958, + "latitude": 52.34138 + }, + { + "longitude": 9.7210158, + "latitude": 52.341112800000005 + }, + { + "longitude": 9.721027300000001, + "latitude": 52.340762100000006 + }, + { + "longitude": 9.721014, + "latitude": 52.340489000000005 + }, + { + "longitude": 9.720966200000001, + "latitude": 52.34006230000001 + }, + { + "longitude": 9.7208479, + "latitude": 52.33946460000001 + }, + { + "longitude": 9.720739400000001, + "latitude": 52.339057200000006 + }, + { + "longitude": 9.720650000000001, + "latitude": 52.3387821 + }, + { + "longitude": 9.720493000000001, + "latitude": 52.3383563 + }, + { + "longitude": 9.7204174, + "latitude": 52.3381514 + }, + { + "longitude": 9.7203751, + "latitude": 52.3380626 + }, + { + "longitude": 9.7203774, + "latitude": 52.3379739 + }, + { + "longitude": 9.7204216, + "latitude": 52.3378894 + }, + { + "longitude": 9.7205039, + "latitude": 52.3378163 + }, + { + "longitude": 9.720617200000001, + "latitude": 52.337760800000005 + }, + { + "longitude": 9.7207519, + "latitude": 52.3377277 + }, + { + "longitude": 9.7208965, + "latitude": 52.3377198 + }, + { + "longitude": 9.721035800000001, + "latitude": 52.33773720000001 + }, + { + "longitude": 9.7212669, + "latitude": 52.3377488 + }, + { + "longitude": 9.7214489, + "latitude": 52.337745000000005 + }, + { + "longitude": 9.7216027, + "latitude": 52.337731500000004 + }, + { + "longitude": 9.7217859, + "latitude": 52.3377009 + }, + { + "longitude": 9.7219537, + "latitude": 52.3376594 + }, + { + "longitude": 9.722128600000001, + "latitude": 52.337602200000006 + }, + { + "longitude": 9.7225307, + "latitude": 52.3374711 + }, + { + "longitude": 9.7227859, + "latitude": 52.337400200000005 + }, + { + "longitude": 9.723063600000001, + "latitude": 52.337333400000006 + }, + { + "longitude": 9.723385500000001, + "latitude": 52.337256200000006 + }, + { + "longitude": 9.7247743, + "latitude": 52.3368484 + }, + { + "longitude": 9.7254273, + "latitude": 52.3366568 + }, + { + "longitude": 9.726050500000001, + "latitude": 52.33647920000001 + }, + { + "longitude": 9.7262467, + "latitude": 52.3364333 + }, + { + "longitude": 9.7266236, + "latitude": 52.336350800000005 + }, + { + "longitude": 9.726958100000001, + "latitude": 52.3362862 + }, + { + "longitude": 9.7272856, + "latitude": 52.336229 + }, + { + "longitude": 9.727679700000001, + "latitude": 52.3361748 + }, + { + "longitude": 9.728080100000001, + "latitude": 52.3361285 + }, + { + "longitude": 9.7284694, + "latitude": 52.336097300000006 + }, + { + "longitude": 9.7288689, + "latitude": 52.336073500000005 + }, + { + "longitude": 9.7292474, + "latitude": 52.3360634 + }, + { + "longitude": 9.729616, + "latitude": 52.336061 + }, + { + "longitude": 9.7300033, + "latitude": 52.3360714 + }, + { + "longitude": 9.7303675, + "latitude": 52.336089900000005 + }, + { + "longitude": 9.7307463, + "latitude": 52.336118500000005 + }, + { + "longitude": 9.7311125, + "latitude": 52.3361553 + }, + { + "longitude": 9.7316111, + "latitude": 52.3362235 + }, + { + "longitude": 9.7319858, + "latitude": 52.336285800000006 + }, + { + "longitude": 9.7325655, + "latitude": 52.336393400000006 + }, + { + "longitude": 9.7334866, + "latitude": 52.336563600000005 + }, + { + "longitude": 9.735521400000001, + "latitude": 52.3369392 + }, + { + "longitude": 9.7375112, + "latitude": 52.337309100000006 + }, + { + "longitude": 9.7404881, + "latitude": 52.3378644 + }, + { + "longitude": 9.7461759, + "latitude": 52.33891010000001 + }, + { + "longitude": 9.7476549, + "latitude": 52.33919040000001 + }, + { + "longitude": 9.7525916, + "latitude": 52.3401025 + }, + { + "longitude": 9.7529239, + "latitude": 52.340163200000006 + }, + { + "longitude": 9.7538356, + "latitude": 52.3403323 + }, + { + "longitude": 9.7562595, + "latitude": 52.340814800000004 + }, + { + "longitude": 9.7566149, + "latitude": 52.340889600000004 + }, + { + "longitude": 9.7570218, + "latitude": 52.340972900000004 + }, + { + "longitude": 9.7575328, + "latitude": 52.341077600000006 + }, + { + "longitude": 9.7593051, + "latitude": 52.3415151 + }, + { + "longitude": 9.7631353, + "latitude": 52.3424703 + }, + { + "longitude": 9.764014000000001, + "latitude": 52.3426793 + }, + { + "longitude": 9.764877100000001, + "latitude": 52.3428455 + }, + { + "longitude": 9.7652079, + "latitude": 52.3428872 + }, + { + "longitude": 9.7656066, + "latitude": 52.342937500000005 + }, + { + "longitude": 9.7661154, + "latitude": 52.3429908 + }, + { + "longitude": 9.7668432, + "latitude": 52.3430338 + }, + { + "longitude": 9.7673729, + "latitude": 52.3430436 + }, + { + "longitude": 9.7678908, + "latitude": 52.3430466 + }, + { + "longitude": 9.7685484, + "latitude": 52.343018300000004 + }, + { + "longitude": 9.769224000000001, + "latitude": 52.342968600000006 + }, + { + "longitude": 9.7700619, + "latitude": 52.3428966 + }, + { + "longitude": 9.7705871, + "latitude": 52.3428638 + }, + { + "longitude": 9.771010500000001, + "latitude": 52.342854 + }, + { + "longitude": 9.7713821, + "latitude": 52.342852900000004 + }, + { + "longitude": 9.771533, + "latitude": 52.3428552 + }, + { + "longitude": 9.771797000000001, + "latitude": 52.3428562 + }, + { + "longitude": 9.7721242, + "latitude": 52.342869300000004 + }, + { + "longitude": 9.7724548, + "latitude": 52.342884600000005 + }, + { + "longitude": 9.772982200000001, + "latitude": 52.3429305 + }, + { + "longitude": 9.773479400000001, + "latitude": 52.34297900000001 + }, + { + "longitude": 9.7739668, + "latitude": 52.343043400000006 + }, + { + "longitude": 9.7746098, + "latitude": 52.3431463 + }, + { + "longitude": 9.7755103, + "latitude": 52.3433149 + }, + { + "longitude": 9.776795, + "latitude": 52.3435889 + }, + { + "longitude": 9.7774715, + "latitude": 52.343747 + }, + { + "longitude": 9.778157, + "latitude": 52.3439187 + }, + { + "longitude": 9.7788102, + "latitude": 52.344097500000004 + }, + { + "longitude": 9.7795574, + "latitude": 52.3443162 + }, + { + "longitude": 9.780226, + "latitude": 52.344525000000004 + }, + { + "longitude": 9.7808316, + "latitude": 52.3447229 + }, + { + "longitude": 9.7818608, + "latitude": 52.345095400000005 + }, + { + "longitude": 9.783014900000001, + "latitude": 52.345550100000004 + }, + { + "longitude": 9.783808, + "latitude": 52.3458947 + }, + { + "longitude": 9.7848068, + "latitude": 52.346358900000006 + }, + { + "longitude": 9.785347100000001, + "latitude": 52.3466268 + }, + { + "longitude": 9.7858839, + "latitude": 52.346907 + }, + { + "longitude": 9.786946400000001, + "latitude": 52.347474000000005 + }, + { + "longitude": 9.787686500000001, + "latitude": 52.347894200000006 + }, + { + "longitude": 9.7880952, + "latitude": 52.3481158 + }, + { + "longitude": 9.7887027, + "latitude": 52.3484464 + }, + { + "longitude": 9.790303900000001, + "latitude": 52.3492316 + }, + { + "longitude": 9.7906838, + "latitude": 52.349355800000005 + }, + { + "longitude": 9.7910599, + "latitude": 52.3494456 + }, + { + "longitude": 9.7912567, + "latitude": 52.34946660000001 + }, + { + "longitude": 9.791439500000001, + "latitude": 52.3494711 + }, + { + "longitude": 9.7916407, + "latitude": 52.349455000000006 + }, + { + "longitude": 9.7918391, + "latitude": 52.3494205 + }, + { + "longitude": 9.7921534, + "latitude": 52.3493415 + }, + { + "longitude": 9.7923475, + "latitude": 52.349307800000005 + }, + { + "longitude": 9.7925178, + "latitude": 52.3492905 + }, + { + "longitude": 9.792764100000001, + "latitude": 52.349285200000004 + }, + { + "longitude": 9.793752900000001, + "latitude": 52.349310700000004 + }, + { + "longitude": 9.7939603, + "latitude": 52.349305300000005 + }, + { + "longitude": 9.794127300000001, + "latitude": 52.34929 + }, + { + "longitude": 9.7943335, + "latitude": 52.3492577 + }, + { + "longitude": 9.794533900000001, + "latitude": 52.3492096 + }, + { + "longitude": 9.7947071, + "latitude": 52.3491542 + }, + { + "longitude": 9.7948242, + "latitude": 52.3491015 + }, + { + "longitude": 9.7949857, + "latitude": 52.3490163 + }, + { + "longitude": 9.795151, + "latitude": 52.348910700000005 + }, + { + "longitude": 9.7953735, + "latitude": 52.348757600000006 + }, + { + "longitude": 9.796036500000001, + "latitude": 52.348042400000004 + }, + { + "longitude": 9.7961085, + "latitude": 52.3479899 + }, + { + "longitude": 9.796467, + "latitude": 52.34760240000001 + }, + { + "longitude": 9.7968249, + "latitude": 52.3472506 + }, + { + "longitude": 9.7970404, + "latitude": 52.347067100000004 + }, + { + "longitude": 9.798299100000001, + "latitude": 52.345618200000004 + }, + { + "longitude": 9.7990863, + "latitude": 52.344672 + }, + { + "longitude": 9.800018600000001, + "latitude": 52.3434748 + }, + { + "longitude": 9.800835600000001, + "latitude": 52.342436400000004 + }, + { + "longitude": 9.801496400000001, + "latitude": 52.341567700000006 + }, + { + "longitude": 9.8025096, + "latitude": 52.34027450000001 + }, + { + "longitude": 9.803652600000001, + "latitude": 52.338931 + }, + { + "longitude": 9.804356400000001, + "latitude": 52.338202 + }, + { + "longitude": 9.804915000000001, + "latitude": 52.3376924 + }, + { + "longitude": 9.805046200000001, + "latitude": 52.337569900000005 + }, + { + "longitude": 9.805840100000001, + "latitude": 52.3369324 + }, + { + "longitude": 9.8075081, + "latitude": 52.335734900000006 + }, + { + "longitude": 9.8086938, + "latitude": 52.3349077 + }, + { + "longitude": 9.8097843, + "latitude": 52.334105900000004 + }, + { + "longitude": 9.8099333, + "latitude": 52.3337609 + }, + { + "longitude": 9.8099405, + "latitude": 52.333620700000004 + }, + { + "longitude": 9.8099007, + "latitude": 52.333489 + }, + { + "longitude": 9.8098297, + "latitude": 52.333378 + }, + { + "longitude": 9.8097435, + "latitude": 52.333274 + }, + { + "longitude": 9.809531100000001, + "latitude": 52.3330562 + }, + { + "longitude": 9.809443100000001, + "latitude": 52.332938500000004 + }, + { + "longitude": 9.8093816, + "latitude": 52.3328198 + }, + { + "longitude": 9.8093415, + "latitude": 52.3326665 + }, + { + "longitude": 9.8093131, + "latitude": 52.3324111 + }, + { + "longitude": 9.809289300000001, + "latitude": 52.332296400000004 + }, + { + "longitude": 9.809272400000001, + "latitude": 52.3322068 + }, + { + "longitude": 9.8089426, + "latitude": 52.332196 + }, + { + "longitude": 9.8086161, + "latitude": 52.3321606 + }, + { + "longitude": 9.808296, + "latitude": 52.332107500000006 + }, + { + "longitude": 9.8079461, + "latitude": 52.332022900000005 + }, + { + "longitude": 9.807544, + "latitude": 52.331882900000004 + }, + { + "longitude": 9.807516600000001, + "latitude": 52.331873800000004 + }, + { + "longitude": 9.8073546, + "latitude": 52.3318074 + }, + { + "longitude": 9.807245700000001, + "latitude": 52.3317604 + }, + { + "longitude": 9.805462700000001, + "latitude": 52.331012400000006 + }, + { + "longitude": 9.805216600000001, + "latitude": 52.3309106 + }, + { + "longitude": 9.8045193, + "latitude": 52.3306222 + }, + { + "longitude": 9.8041462, + "latitude": 52.33046 + }, + { + "longitude": 9.8037316, + "latitude": 52.330279700000006 + }, + { + "longitude": 9.803406200000001, + "latitude": 52.330120900000004 + }, + { + "longitude": 9.8029285, + "latitude": 52.329829100000005 + }, + { + "longitude": 9.8025252, + "latitude": 52.329520200000005 + }, + { + "longitude": 9.8019032, + "latitude": 52.328913 + }, + { + "longitude": 9.8016953, + "latitude": 52.328734600000004 + }, + { + "longitude": 9.801450500000001, + "latitude": 52.3285714 + }, + { + "longitude": 9.801176, + "latitude": 52.3284254 + }, + { + "longitude": 9.8007877, + "latitude": 52.3282655 + }, + { + "longitude": 9.800417600000001, + "latitude": 52.3281592 + }, + { + "longitude": 9.7995853, + "latitude": 52.3279969 + }, + { + "longitude": 9.7979911, + "latitude": 52.3276891 + }, + { + "longitude": 9.797720700000001, + "latitude": 52.3276369 + }, + { + "longitude": 9.7954975, + "latitude": 52.327198900000006 + }, + { + "longitude": 9.7938822, + "latitude": 52.32687850000001 + }, + { + "longitude": 9.7935136, + "latitude": 52.326773300000006 + }, + { + "longitude": 9.793246400000001, + "latitude": 52.3266265 + }, + { + "longitude": 9.793107800000001, + "latitude": 52.326486900000006 + }, + { + "longitude": 9.793054000000001, + "latitude": 52.326295 + }, + { + "longitude": 9.793084700000001, + "latitude": 52.326077000000005 + }, + { + "longitude": 9.7936137, + "latitude": 52.3251287 + }, + { + "longitude": 9.7942362, + "latitude": 52.3241023 + }, + { + "longitude": 9.7949769, + "latitude": 52.3227563 + }, + { + "longitude": 9.7956932, + "latitude": 52.3216095 + }, + { + "longitude": 9.7957087, + "latitude": 52.3215872 + }, + { + "longitude": 9.795823200000001, + "latitude": 52.3216193 + }, + { + "longitude": 9.795916700000001, + "latitude": 52.321637700000004 + }, + { + "longitude": 9.7966724, + "latitude": 52.321786800000005 + }, + { + "longitude": 9.7967405, + "latitude": 52.321800200000006 + }, + { + "longitude": 9.7968667, + "latitude": 52.321825100000005 + }, + { + "longitude": 9.796843072683524, + "latitude": 52.321873937906744 + } +] diff --git a/platform/ios/ios.xcodeproj/project.pbxproj b/platform/ios/ios.xcodeproj/project.pbxproj index 160d82bcf9..ab6ac6cb17 100644 --- a/platform/ios/ios.xcodeproj/project.pbxproj +++ b/platform/ios/ios.xcodeproj/project.pbxproj @@ -149,6 +149,11 @@ 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 */; }; + 358DDF8821AEC37C0029FCBB /* OverflowViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 358DDF8721AEC37C0029FCBB /* OverflowViewController.swift */; }; + 358DDF8A21AEC4330029FCBB /* route.json in Resources */ = {isa = PBXBuildFile; fileRef = 358DDF8921AEC4330029FCBB /* route.json */; }; + 358DDF8C21AEE5A20029FCBB /* route.json in Resources */ = {isa = PBXBuildFile; fileRef = 358DDF8B21AEE5A10029FCBB /* route.json */; }; + 358DDF8E21AEE86F0029FCBB /* one-liner.json in Resources */ = {isa = PBXBuildFile; fileRef = 358DDF8D21AEE86F0029FCBB /* one-liner.json */; }; + 358DDF9021AEED540029FCBB /* simple-route.json in Resources */ = {isa = PBXBuildFile; fileRef = 358DDF8F21AEED540029FCBB /* simple-route.json */; }; 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, ); }; }; @@ -876,6 +881,12 @@ 3575798A1D502B0C000B822E /* MGLBackgroundStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLBackgroundStyleLayerTests.mm; path = ../../darwin/test/MGLBackgroundStyleLayerTests.mm; sourceTree = ""; }; 357FE2DB1E02D2B20068B753 /* NSCoder+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSCoder+MGLAdditions.h"; path = "../../darwin/src/NSCoder+MGLAdditions.h"; sourceTree = ""; }; 357FE2DC1E02D2B20068B753 /* NSCoder+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = "NSCoder+MGLAdditions.mm"; path = "../../darwin/src/NSCoder+MGLAdditions.mm"; sourceTree = ""; }; + 358DDF8621AEC37B0029FCBB /* iosapp-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "iosapp-Bridging-Header.h"; sourceTree = ""; }; + 358DDF8721AEC37C0029FCBB /* OverflowViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverflowViewController.swift; sourceTree = ""; }; + 358DDF8921AEC4330029FCBB /* route.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = route.json; sourceTree = ""; }; + 358DDF8B21AEE5A10029FCBB /* route.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = route.json; path = app/route.json; sourceTree = SOURCE_ROOT; }; + 358DDF8D21AEE86F0029FCBB /* one-liner.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "one-liner.json"; path = "../../darwin/test/one-liner.json"; sourceTree = ""; }; + 358DDF8F21AEED540029FCBB /* simple-route.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "simple-route.json"; sourceTree = ""; }; 3598544C1E1D38AA00B29F84 /* MGLDistanceFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLDistanceFormatterTests.m; path = ../../darwin/test/MGLDistanceFormatterTests.m; sourceTree = ""; }; 359F57451D2FDBD5005217F1 /* MGLUserLocationAnnotationView_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLUserLocationAnnotationView_Private.h; sourceTree = ""; }; 35B82BF61D6C5F8400B1B721 /* NSPredicate+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSPredicate+MGLAdditions.h"; sourceTree = ""; }; @@ -1105,7 +1116,7 @@ DA17BE2F1CC4BAC300402C41 /* MGLMapView_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMapView_Private.h; sourceTree = ""; }; DA1AC01B1E5B8774006DF1D6 /* lt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = lt; path = lt.lproj/Localizable.strings; sourceTree = ""; }; DA1AC0201E5B8917006DF1D6 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = uk; path = uk.lproj/Foundation.stringsdict; sourceTree = ""; }; - DA1DC94A1CB6C1C2006E619F /* Mapbox GL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Mapbox GL.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + DA1DC94A1CB6C1C2006E619F /* MapboxGL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MapboxGL.app; sourceTree = BUILT_PRODUCTS_DIR; }; DA1DC9501CB6C1C2006E619F /* MBXAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXAppDelegate.h; sourceTree = ""; }; DA1DC9531CB6C1C2006E619F /* MBXViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXViewController.h; sourceTree = ""; }; DA1DC95E1CB6C1C2006E619F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -1797,6 +1808,7 @@ 9604FC341F313A5E003EEA02 /* Fixtures */ = { isa = PBXGroup; children = ( + 358DDF8D21AEE86F0029FCBB /* one-liner.json */, 353BAEF51D646370009A8DA9 /* amsterdam.geojson */, DA1DC96C1CB6C6CE006E619F /* points.geojson */, DA1DC96D1CB6C6CE006E619F /* polyline.geojson */, @@ -1845,7 +1857,7 @@ DA1DC94B1CB6C1C2006E619F /* Products */ = { isa = PBXGroup; children = ( - DA1DC94A1CB6C1C2006E619F /* Mapbox GL.app */, + DA1DC94A1CB6C1C2006E619F /* MapboxGL.app */, DABCABA81CB80692000A7C39 /* Bench GL.app */, DA8847D21CBAF91600AB86E3 /* Mapbox.framework */, DAA4E4131CBB71D400178DFB /* libMapbox.a */, @@ -1890,6 +1902,8 @@ 076171C62141A91700668A35 /* Settings.bundle */, 9604FC341F313A5E003EEA02 /* Fixtures */, DA1DC94D1CB6C1C2006E619F /* Supporting Files */, + 358DDF8721AEC37C0029FCBB /* OverflowViewController.swift */, + 358DDF8621AEC37B0029FCBB /* iosapp-Bridging-Header.h */, ); name = "Demo App"; path = app; @@ -1898,6 +1912,7 @@ DA1DC94D1CB6C1C2006E619F /* Supporting Files */ = { isa = PBXGroup; children = ( + 358DDF8921AEC4330029FCBB /* route.json */, DA1DC9961CB6E046006E619F /* main.m */, ); name = "Supporting Files"; @@ -1960,6 +1975,8 @@ DA2E88551CC036F400F24E7B /* Info.plist */, DA2784FB1DF02FF4001D5B8D /* Media.xcassets */, DA35D0871E1A6309007DED41 /* one-liner.json */, + 358DDF8B21AEE5A10029FCBB /* route.json */, + 358DDF8F21AEED540029FCBB /* simple-route.json */, 1F8A59F62165326C004DFE75 /* sideload_sat.db */, ); name = "SDK Tests"; @@ -2652,7 +2669,7 @@ ); name = iosapp; productName = iosapp; - productReference = DA1DC94A1CB6C1C2006E619F /* Mapbox GL.app */; + productReference = DA1DC94A1CB6C1C2006E619F /* MapboxGL.app */; productType = "com.apple.product-type.application"; }; DA2E88501CC036F400F24E7B /* test */ = { @@ -2766,7 +2783,8 @@ }; DA1DC9491CB6C1C2006E619F = { CreatedOnToolsVersion = 7.3; - LastSwiftMigration = 0820; + DevelopmentTeam = GJZR2MEM28; + LastSwiftMigration = 1010; }; DA2E88501CC036F400F24E7B = { CreatedOnToolsVersion = 7.3; @@ -2858,12 +2876,14 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 358DDF8C21AEE5A20029FCBB /* route.json in Resources */, DD4823771D94AE6C00EB71B7 /* numeric_filter_style.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 */, + 358DDF9021AEED540029FCBB /* simple-route.json in Resources */, DA821D071CCC6D59007508D4 /* Main.storyboard in Resources */, DA1DC9731CB6C6CE006E619F /* threestates.geojson in Resources */, DA821D061CCC6D59007508D4 /* LaunchScreen.storyboard in Resources */, @@ -2871,6 +2891,8 @@ 1F26B6C320E1A351007BCC21 /* simple_route.json in Resources */, DD4823751D94AE6C00EB71B7 /* fill_filter_style.json in Resources */, DA1DC99F1CB6E088006E619F /* Assets.xcassets in Resources */, + 358DDF8A21AEC4330029FCBB /* route.json in Resources */, + 358DDF8E21AEE86F0029FCBB /* one-liner.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2963,6 +2985,7 @@ DA1DC96A1CB6C6B7006E619F /* MBXCustomCalloutView.m in Sources */, 927FBCFC1F4DAA8300F8BF1F /* MBXSnapshotsViewController.m in Sources */, DA1DC99B1CB6E064006E619F /* MBXViewController.m in Sources */, + 358DDF8821AEC37C0029FCBB /* OverflowViewController.swift in Sources */, 40FDA76B1CCAAA6800442548 /* MBXAnnotationView.m in Sources */, 1F26B6C120E189C9007BCC21 /* MBXCustomLocationViewController.m in Sources */, 3E6465D62065767A00685536 /* LimeGreenStyleLayer.m in Sources */, @@ -3736,11 +3759,15 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - DEVELOPMENT_TEAM = ""; + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; + 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"; + PRODUCT_NAME = MapboxGL; + SWIFT_OBJC_BRIDGING_HEADER = "app/iosapp-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 3.0; }; name = Debug; @@ -3749,11 +3776,14 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - DEVELOPMENT_TEAM = ""; + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; + 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"; + PRODUCT_NAME = MapboxGL; + SWIFT_OBJC_BRIDGING_HEADER = "app/iosapp-Bridging-Header.h"; SWIFT_VERSION = 3.0; }; name = Release; @@ -3776,10 +3806,10 @@ "$(geometry_cflags)", "$(geojson_cflags)", ); - OTHER_LDFLAGS = ( - "$(mbgl_core_LINK_LIBRARIES)", - "$(mbgl_filesource_LINK_LIBRARIES)", - ); + 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)"; @@ -3807,10 +3837,10 @@ "$(geometry_cflags)", "$(geojson_cflags)", ); - OTHER_LDFLAGS = ( - "$(mbgl_core_LINK_LIBRARIES)", - "$(mbgl_filesource_LINK_LIBRARIES)", - ); + 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)"; diff --git a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/CI.xcscheme b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/CI.xcscheme index 6b018e1337..5cf7fdb3a4 100644 --- a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/CI.xcscheme +++ b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/CI.xcscheme @@ -29,7 +29,7 @@ @@ -71,7 +71,7 @@ @@ -100,7 +100,7 @@ @@ -119,7 +119,7 @@ diff --git a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/iosapp.xcscheme b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/iosapp.xcscheme index 1f8969faf7..1cb29addd2 100644 --- a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/iosapp.xcscheme +++ b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/iosapp.xcscheme @@ -15,7 +15,7 @@ @@ -33,7 +33,7 @@ @@ -49,6 +49,8 @@ useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" + stopOnEveryUBSanitizerIssue = "YES" + stopOnEveryMainThreadCheckerIssue = "YES" debugServiceExtension = "internal" allowLocationSimulation = "YES"> @@ -75,7 +77,7 @@ diff --git a/platform/ios/ios.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist b/platform/ios/ios.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist index cb6ecad738..9875cd7d37 100644 --- a/platform/ios/ios.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/platform/ios/ios.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist @@ -6,7 +6,7 @@