Commit 99dad828 authored by lmj_521aiau@163.com's avatar lmj_521aiau@163.com

locationManager

parent d69941e9
No preview for this file type
...@@ -27,5 +27,6 @@ target 'ZhiJi' do ...@@ -27,5 +27,6 @@ target 'ZhiJi' do
pod 'AMapLocation' pod 'AMapLocation'
pod 'UMCCommon' pod 'UMCCommon'
pod 'GoogleMaps'
end end
...@@ -29,6 +29,11 @@ PODS: ...@@ -29,6 +29,11 @@ PODS:
- FBSDKShareKit/Share (= 7.1.1) - FBSDKShareKit/Share (= 7.1.1)
- FBSDKShareKit/Share (7.1.1): - FBSDKShareKit/Share (7.1.1):
- FBSDKCoreKit (~> 7.1.1) - FBSDKCoreKit (~> 7.1.1)
- GoogleMaps (3.9.0):
- GoogleMaps/Maps (= 3.9.0)
- GoogleMaps/Base (3.9.0)
- GoogleMaps/Maps (3.9.0):
- GoogleMaps/Base
- IQKeyboardManager (6.5.5) - IQKeyboardManager (6.5.5)
- Masonry (1.1.0) - Masonry (1.1.0)
- MBProgressHUD (1.2.0) - MBProgressHUD (1.2.0)
...@@ -51,6 +56,7 @@ DEPENDENCIES: ...@@ -51,6 +56,7 @@ DEPENDENCIES:
- AMapLocation - AMapLocation
- AMapSearch - AMapSearch
- FBSDKShareKit - FBSDKShareKit
- GoogleMaps
- IQKeyboardManager - IQKeyboardManager
- Masonry - Masonry
- MBProgressHUD - MBProgressHUD
...@@ -71,6 +77,7 @@ SPEC REPOS: ...@@ -71,6 +77,7 @@ SPEC REPOS:
- AMapSearch - AMapSearch
- FBSDKCoreKit - FBSDKCoreKit
- FBSDKShareKit - FBSDKShareKit
- GoogleMaps
- IQKeyboardManager - IQKeyboardManager
- Masonry - Masonry
- MBProgressHUD - MBProgressHUD
...@@ -90,6 +97,7 @@ SPEC CHECKSUMS: ...@@ -90,6 +97,7 @@ SPEC CHECKSUMS:
AMapSearch: a048bcca3bf0b8083345070e1f193f814bd8dc01 AMapSearch: a048bcca3bf0b8083345070e1f193f814bd8dc01
FBSDKCoreKit: b46507dc8b8cefed31d644e74d7cc30e2a715ef8 FBSDKCoreKit: b46507dc8b8cefed31d644e74d7cc30e2a715ef8
FBSDKShareKit: 00a055c1999b099596e00212dd1c0600c6697019 FBSDKShareKit: 00a055c1999b099596e00212dd1c0600c6697019
GoogleMaps: 4b5346bddfe6911bb89155d43c903020170523ac
IQKeyboardManager: 3a8b9e603f8b0eeaf5f096a1f2b2cfcf121992ef IQKeyboardManager: 3a8b9e603f8b0eeaf5f096a1f2b2cfcf121992ef
Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406 MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406
...@@ -102,6 +110,6 @@ SPEC CHECKSUMS: ...@@ -102,6 +110,6 @@ SPEC CHECKSUMS:
UMCCommon: 4e80f93492d300245683236668763dc5d0b04dbd UMCCommon: 4e80f93492d300245683236668763dc5d0b04dbd
YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30 YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
PODFILE CHECKSUM: 02ea1e1f9e84127813a713d38ebae3856cc7f7ce PODFILE CHECKSUM: fdbeaccea4eaea8a5e67d375ab74a1b733e3ad2c
COCOAPODS: 1.9.3 COCOAPODS: 1.9.3
//
// GMSCompatabilityMacros.h
// Google Maps SDK for iOS
//
// Copyright 2015 Google LLC
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <Foundation/Foundation.h>
#if defined(SWIFT_SDK_OVERLAY_UIKIT_EPOCH)
#define GMS_SWIFT_NAME_2_0_3_0(name_swift_2, name_swift_3) NS_SWIFT_NAME(name_swift_3)
#else
#define GMS_SWIFT_NAME_2_0_3_0(name_swift_2, name_swift_3) NS_SWIFT_NAME(name_swift_2)
#endif
//
// GMSCoordinateBounds.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google LLC
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreLocation/CoreLocation.h>
NS_ASSUME_NONNULL_BEGIN
/**
* GMSCoordinateBounds represents a rectangular bounding box on the Earth's surface.
* GMSCoordinateBounds is immutable and can't be modified after construction.
*/
@interface GMSCoordinateBounds : NSObject
/** The North-East corner of these bounds. */
@property(nonatomic, readonly) CLLocationCoordinate2D northEast;
/** The South-West corner of these bounds. */
@property(nonatomic, readonly) CLLocationCoordinate2D southWest;
/**
* Returns NO if this bounds does not contain any points. For example,
* [[GMSCoordinateBounds alloc] init].valid == NO.
*
* When an invalid bounds is expanded with valid coordinates via includingCoordinate: or
* includingBounds:, the resulting bounds will be valid but contain only the new coordinates.
*/
@property(nonatomic, readonly, getter=isValid) BOOL valid;
/**
* Inits the northEast and southWest bounds corresponding to the rectangular region defined by the
* two corners.
*
* It is ambiguous whether the longitude of the box extends from |coord1| to |coord2| or vice-versa;
* the box is constructed as the smaller of the two variants, eliminating the ambiguity.
*/
- (id)initWithCoordinate:(CLLocationCoordinate2D)coord1 coordinate:(CLLocationCoordinate2D)coord2;
/**
* Returns a GMSCoordinateBounds representing the current bounds extended to include the passed-in
* coordinate.
*
* If the current bounds is invalid, the result is a valid bounds containing only |coordinate|.
*/
- (GMSCoordinateBounds *)includingCoordinate:(CLLocationCoordinate2D)coordinate;
/**
* Returns a GMSCoordinateBounds representing the current bounds extended to include the entire
* other bounds.
*
* If the current bounds is invalid, the result is a valid bounds equal to |other|.
*/
- (GMSCoordinateBounds *)includingBounds:(GMSCoordinateBounds *)other;
/**
* Returns YES if |coordinate| is contained within this bounds. This includes points that lie
* exactly on the edge of the bounds.
*/
- (BOOL)containsCoordinate:(CLLocationCoordinate2D)coordinate;
/**
* Returns YES if |other| overlaps with this bounds. Two bounds are overlapping if there is at least
* one coordinate point contained by both.
*/
- (BOOL)intersectsBounds:(GMSCoordinateBounds *)other;
@end
NS_ASSUME_NONNULL_END
//
// GMSDeprecationMacros.h
// Google Maps SDK for iOS
//
// Copyright 2015 Google LLC
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#ifndef IPHONE_MAPS_SDK_BASE_GMSDEPRECATIONMACROS_H_
#define IPHONE_MAPS_SDK_BASE_GMSDEPRECATIONMACROS_H_
#ifndef __GMS_AVAILABLE_BUT_DEPRECATED
#define __GMS_AVAILABLE_BUT_DEPRECATED __deprecated
#endif
#ifndef __GMS_AVAILABLE_BUT_DEPRECATED_MSG
#define __GMS_AVAILABLE_BUT_DEPRECATED_MSG(msg) __deprecated_msg(msg)
#endif
#endif
#import "GMSCompatabilityMacros.h"
#import "GMSCoordinateBounds.h"
#import "GMSDeprecationMacros.h"
framework module GoogleMapsBase {
umbrella header "GoogleMapsBase.h"
export *
module * { export * }
link "z"
link framework "CoreFoundation"
link framework "CoreLocation"
link framework "CoreTelephony"
link framework "CoreText"
link framework "Foundation"
link framework "QuartzCore"
link framework "Security"
link framework "UIKit"
}
Please go to https://developers.google.com/maps/documentation/ios-sdk/releases
to view the Maps iOS release notes.
/*
* Copyright 2016 Google LLC. All rights reserved.
*
*
* 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.
*/
#import <UIKit/UIKit.h>
@interface DemoAppDelegate : UIResponder <
UIApplicationDelegate,
UISplitViewControllerDelegate>
@property(nonatomic) UIWindow *window;
@property(nonatomic) UINavigationController *navigationController;
@property(nonatomic) UISplitViewController *splitViewController;
/**
* If the device is an iPad, this property controls the sample displayed in the
* right side of its split view controller.
*/
@property(nonatomic) UIViewController *sample;
@end
/*
* Copyright 2016 Google LLC. All rights reserved.
*
*
* 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.
*/
#import "GoogleMapsDemos/DemoAppDelegate.h"
#import "GoogleMapsDemos/MasterViewController.h"
#import "GoogleMapsDemos/SDKDemoAPIKey.h"
#import <GoogleMaps/GoogleMaps.h>
@implementation DemoAppDelegate {
id _services;
}
@synthesize window = _window;
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"Build version: %s", __VERSION__);
if (kAPIKey.length == 0) {
// Blow up if APIKey has not yet been set.
NSString *bundleId = [[NSBundle mainBundle] bundleIdentifier];
NSString *format = @"Configure APIKey inside SDKDemoAPIKey.h for your "
@"bundle `%@`, see README.GoogleMapsDemos for more information";
@throw [NSException exceptionWithName:@"DemoAppDelegate"
reason:[NSString stringWithFormat:format, bundleId]
userInfo:nil];
}
[GMSServices provideAPIKey:kAPIKey];
_services = [GMSServices sharedServices];
// Log the required open source licenses! Yes, just NSLog-ing them is not enough but is good for
// a demo.
NSLog(@"Open source licenses:\n%@", [GMSServices openSourceLicenseInfo]);
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
MasterViewController *master = [[MasterViewController alloc] init];
master.appDelegate = self;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
// This is an iPhone; configure the top-level navigation controller as the
// rootViewController, which contains the 'master' list of samples.
self.navigationController =
[[UINavigationController alloc] initWithRootViewController:master];
// Force non-translucent navigation bar for consistency of demo between
// iOS 6 and iOS 7.
self.navigationController.navigationBar.translucent = NO;
self.window.rootViewController = self.navigationController;
} else {
// This is an iPad; configure a split-view controller that contains the
// the 'master' list of samples on the left side, and the current displayed
// sample on the right (begins empty).
UINavigationController *masterNavigationController =
[[UINavigationController alloc] initWithRootViewController:master];
UIViewController *empty = [[UIViewController alloc] init];
UINavigationController *detailNavigationController =
[[UINavigationController alloc] initWithRootViewController:empty];
// Force non-translucent navigation bar for consistency of demo between
// iOS 6 and iOS 7.
detailNavigationController.navigationBar.translucent = NO;
self.splitViewController = [[UISplitViewController alloc] init];
self.splitViewController.delegate = master;
self.splitViewController.viewControllers =
@[masterNavigationController, detailNavigationController];
self.splitViewController.presentsWithGesture = NO;
self.window.rootViewController = self.splitViewController;
}
[self.window makeKeyAndVisible];
return YES;
}
- (void)setSample:(UIViewController *)sample {
NSAssert([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad,
@"Expected device to be iPad inside setSample:");
// Finds the UINavigationController in the right side of the sample, and
// replace its displayed controller with the new sample.
UINavigationController *nav =
[self.splitViewController.viewControllers objectAtIndex:1];
[nav setViewControllers:[NSArray arrayWithObject:sample] animated:NO];
}
- (UIViewController *)sample {
NSAssert([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad,
@"Expected device to be iPad inside sample");
// The current sample is the top-most VC in the right-hand pane of the
// splitViewController.
UINavigationController *nav =
[self.splitViewController.viewControllers objectAtIndex:1];
return [[nav viewControllers] objectAtIndex:0];
}
@end
<?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.example.GoogleMapsDemos</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.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Show your location on the map</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UIStatusBarHidden</key>
<false/>
<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>
{
"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"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Maps-SDK-Demo-App_120.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Maps-SDK-Demo-App_180.png",
"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"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Maps-SDK-Demo-App_76.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Maps-SDK-Demo-App_152.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "Maps-SDK-Demo-App_167.png",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
\ No newline at end of file
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}
\ No newline at end of file
/*
* Copyright 2016 Google LLC. All rights reserved.
*
*
* 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.
*/
#import <UIKit/UIKit.h>
@class DemoAppDelegate;
@interface MasterViewController : UITableViewController <
UISplitViewControllerDelegate,
UITableViewDataSource,
UITableViewDelegate>
@property(nonatomic, weak) DemoAppDelegate *appDelegate;
@end
/*
* Copyright 2016 Google LLC. All rights reserved.
*
*
* 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.
*/
#import "GoogleMapsDemos/MasterViewController.h"
#import "GoogleMapsDemos/DemoAppDelegate.h"
#import "GoogleMapsDemos/Samples/Samples.h"
#import <GoogleMaps/GoogleMaps.h>
@implementation MasterViewController {
NSArray *_demos;
NSArray *_demoSections;
BOOL _isPhone;
UIPopoverController *_popover;
UIBarButtonItem *_samplesButton;
__weak UIViewController *_controller;
CLLocationManager *_locationManager;
}
- (void)viewDidLoad {
[super viewDidLoad];
_isPhone = [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone;
if (!_isPhone) {
self.clearsSelectionOnViewWillAppear = NO;
} else {
UIBarButtonItem *backButton =
[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Back", @"Back")
style:UIBarButtonItemStylePlain
target:nil
action:nil];
[self.navigationItem setBackBarButtonItem:backButton];
}
self.title = NSLocalizedString(@"Maps SDK Demos", @"Maps SDK Demos");
self.title = [NSString stringWithFormat:@"%@: %@", self.title, [GMSServices SDKLongVersion]];
self.tableView.autoresizingMask =
UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
self.tableView.delegate = self;
self.tableView.dataSource = self;
_demoSections = [Samples loadSections];
_demos = [Samples loadDemos];
if (!_isPhone) {
[self loadDemo:0 atIndex:0];
}
}
#pragma mark - UITableViewController
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return _demoSections.count;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 35.0;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
return [_demoSections objectAtIndex:section];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSArray *demosInSection = [_demos objectAtIndex:section];
return demosInSection.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:cellIdentifier];
if (_isPhone) {
[cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
}
}
NSDictionary *demo = [[_demos objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
cell.textLabel.text = [demo objectForKey:@"title"];
cell.detailTextLabel.text = [demo objectForKey:@"description"];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// The user has chosen a sample; load it and clear the selection!
[self loadDemo:indexPath.section atIndex:indexPath.row];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
#pragma mark - Split view
- (void)splitViewController:(UISplitViewController *)splitController
willHideViewController:(UIViewController *)viewController
withBarButtonItem:(UIBarButtonItem *)barButtonItem
forPopoverController:(UIPopoverController *)popoverController {
_popover = popoverController;
_samplesButton = barButtonItem;
_samplesButton.title = NSLocalizedString(@"Samples", @"Samples");
_samplesButton.style = UIBarButtonItemStyleDone;
[self updateSamplesButton];
}
- (void)splitViewController:(UISplitViewController *)splitController
willShowViewController:(UIViewController *)viewController
invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem {
_popover = nil;
_samplesButton = nil;
[self updateSamplesButton];
}
#pragma mark - Private methods
- (void)loadDemo:(NSUInteger)section atIndex:(NSUInteger)index {
NSDictionary *demo = [[_demos objectAtIndex:section] objectAtIndex:index];
UIViewController *controller = [[[demo objectForKey:@"controller"] alloc] init];
_controller = controller;
if (controller != nil) {
controller.title = [demo objectForKey:@"title"];
if (_isPhone) {
[self.navigationController pushViewController:controller animated:YES];
} else {
[self.appDelegate setSample:controller];
[_popover dismissPopoverAnimated:YES];
}
[self updateSamplesButton];
}
}
// This method is invoked when the left 'back' button in the split view
// controller on iPad should be updated (either made visible or hidden).
// It assumes that the left bar button item may be safely modified to contain
// the samples button.
- (void)updateSamplesButton {
_controller.navigationItem.leftBarButtonItem = _samplesButton;
}
@end
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10116" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="FA1-J0-KAa">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<scenes>
<!--Table View Controller-->
<scene sceneID="BiP-r6-d2e">
<objects>
<tableViewController clearsSelectionOnViewWillAppear="NO" id="MEq-fz-d5D" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="TxE-uG-WRf">
<rect key="frame" x="0.0" y="64" width="600" height="536"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<sections>
<tableViewSection headerTitle=" " id="knR-Pj-As9">
<cells>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="USa-fA-rSo">
<rect key="frame" x="0.0" y="28" width="600" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="USa-fA-rSo" id="B07-0v-1rs">
<rect key="frame" x="0.0" y="0.0" width="600" height="43"/>
<autoresizingMask key="autoresizingMask"/>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="cx7-vJ-Uys">
<rect key="frame" x="0.0" y="72" width="600" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="cx7-vJ-Uys" id="yzB-kq-4h5">
<rect key="frame" x="0.0" y="0.0" width="600" height="43"/>
<autoresizingMask key="autoresizingMask"/>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="Y7t-7w-LlT">
<rect key="frame" x="0.0" y="116" width="600" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Y7t-7w-LlT" id="xEX-UD-8pF">
<rect key="frame" x="0.0" y="0.0" width="600" height="43"/>
<autoresizingMask key="autoresizingMask"/>
</tableViewCellContentView>
</tableViewCell>
</cells>
</tableViewSection>
</sections>
<connections>
<outlet property="dataSource" destination="MEq-fz-d5D" id="ifl-DD-lEK"/>
<outlet property="delegate" destination="MEq-fz-d5D" id="dSy-kE-SWt"/>
</connections>
</tableView>
<extendedEdge key="edgesForExtendedLayout" bottom="YES"/>
<navigationItem key="navigationItem" id="OVc-ik-KAD"/>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="yhF-d5-Y7D" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1630" y="-96"/>
</scene>
<!--View Controller-->
<scene sceneID="6Gc-8o-0et">
<objects>
<viewController id="YRZ-j4-N6z" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="I2y-I1-GwB"/>
<viewControllerLayoutGuide type="bottom" id="hWz-J8-gdE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="9XH-ez-F0t">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" red="0.9137254901960784" green="0.89803921568627454" blue="0.85882352941176465" alpha="1" colorSpace="calibratedRGB"/>
</view>
<navigationItem key="navigationItem" id="gM0-ZE-dNL"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="eOH-9U-1Zu" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1630" y="588"/>
</scene>
<!--Navigation Controller-->
<scene sceneID="GlB-rK-pG2">
<objects>
<navigationController id="WOd-NA-Oqr" sceneMemberID="viewController">
<navigationBar key="navigationBar" contentMode="scaleToFill" id="s66-cv-zc0">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<connections>
<segue destination="MEq-fz-d5D" kind="relationship" relationship="rootViewController" id="thR-Dz-4vA"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="72E-Ti-ULj" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="876" y="-96"/>
</scene>
<!--Split View Controller-->
<scene sceneID="EIS-Y8-RQ6">
<objects>
<splitViewController id="FA1-J0-KAa" sceneMemberID="viewController">
<connections>
<segue destination="WOd-NA-Oqr" kind="relationship" relationship="masterViewController" id="Zm1-nY-LVC"/>
<segue destination="l6G-hw-ciz" kind="relationship" relationship="detailViewController" id="gpz-nc-7Ae"/>
</connections>
</splitViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="LLF-Wb-Fvv" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-10" y="235"/>
</scene>
<!--Navigation Controller-->
<scene sceneID="Cv7-Zr-41p">
<objects>
<navigationController id="l6G-hw-ciz" sceneMemberID="viewController">
<navigationBar key="navigationBar" contentMode="scaleToFill" id="rqN-jS-PAw">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<connections>
<segue destination="YRZ-j4-N6z" kind="relationship" relationship="rootViewController" id="Xg7-wq-csC"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="hgH-vw-zuX" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="876" y="588"/>
</scene>
</scenes>
</document>
[
{
"featureType": "all",
"elementType": "geometry",
"stylers": [
{
"color": "#242f3e"
}
]
},
{
"featureType": "all",
"elementType": "labels.text.stroke",
"stylers": [
{
"lightness": -80
}
]
},
{
"featureType": "administrative",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#746855"
}
]
},
{
"featureType": "administrative.locality",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#d59563"
}
]
},
{
"featureType": "poi",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#d59563"
}
]
},
{
"featureType": "poi.park",
"elementType": "geometry",
"stylers": [
{
"color": "#263c3f"
}
]
},
{
"featureType": "poi.park",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#6b9a76"
}
]
},
{
"featureType": "road",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#2b3544"
}
]
},
{
"featureType": "road",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#9ca5b3"
}
]
},
{
"featureType": "road.arterial",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#38414e"
}
]
},
{
"featureType": "road.arterial",
"elementType": "geometry.stroke",
"stylers": [
{
"color": "#212a37"
}
]
},
{
"featureType": "road.highway",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#746855"
}
]
},
{
"featureType": "road.highway",
"elementType": "geometry.stroke",
"stylers": [
{
"color": "#1f2835"
}
]
},
{
"featureType": "road.highway",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#f3d19c"
}
]
},
{
"featureType": "road.local",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#38414e"
}
]
},
{
"featureType": "road.local",
"elementType": "geometry.stroke",
"stylers": [
{
"color": "#212a37"
}
]
},
{
"featureType": "transit",
"elementType": "geometry",
"stylers": [
{
"color": "#2f3948"
}
]
},
{
"featureType": "transit.station",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#d59563"
}
]
},
{
"featureType": "water",
"elementType": "geometry",
"stylers": [
{
"color": "#17263c"
}
]
},
{
"featureType": "water",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#515c6d"
}
]
},
{
"featureType": "water",
"elementType": "labels.text.stroke",
"stylers": [
{
"lightness": -20
}
]
}
]
[
{
"featureType": "all",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#755f5d"
}
]
},
{
"featureType": "administrative",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#d4ccb9"
}
]
},
{
"featureType": "administrative.country",
"elementType": "geometry.stroke",
"stylers": [
{
"color": "#baafae"
}
]
},
{
"featureType": "administrative.land_parcel",
"elementType": "geometry.stroke",
"stylers": [
{
"color": "#d4ccb9"
}
]
},
{
"featureType": "landscape.man_made",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#ebe3cd"
}
]
},
{
"featureType": "landscape.natural",
"elementType": "geometry",
"stylers": [
{
"color": "#ebe3cd"
}
]
},
{
"featureType": "landscape.natural",
"elementType": "geometry.fill",
"stylers": [
{
"lightness": -10
}
]
},
{
"featureType": "poi",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#d4ccb9"
}
]
},
{
"featureType": "poi",
"elementType": "labels.icon",
"stylers": [
{
"hue": "#ff7f00"
}
]
},
{
"featureType": "poi.park",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#9ba56f"
}
]
},
{
"featureType": "road",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#f5f1e6"
}
]
},
{
"featureType": "road",
"elementType": "geometry.stroke",
"stylers": [
{
"color": "#dfd8c3"
}
]
},
{
"featureType": "road.arterial",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#fdfcf8"
}
]
},
{
"featureType": "road.arterial",
"elementType": "geometry.stroke",
"stylers": [
{
"color": "#e4e3df"
}
]
},
{
"featureType": "road.highway",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#f2cb77"
}
]
},
{
"featureType": "road.highway",
"elementType": "geometry.stroke",
"stylers": [
{
"color": "#ecb43d"
}
]
},
{
"featureType": "road.highway.controlled_access",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#e98d58"
}
]
},
{
"featureType": "road.highway.controlled_access",
"elementType": "geometry.stroke",
"stylers": [
{
"color": "#d27f4f"
}
]
},
{
"featureType": "transit.line",
"elementType": "geometry",
"stylers": [
{
"color": "#d4ccb9"
}
]
},
{
"featureType": "transit.station.airport",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#d4ccb9"
}
]
},
{
"featureType": "water",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#b9d3c2"
}
]
}
]
[
{
"featureType": "all",
"elementType": "geometry",
"stylers": [
{
"color": "#f5f5f5"
}
]
},
{
"featureType": "all",
"elementType": "labels.icon",
"stylers": [
{
"saturation": -100
}
]
},
{
"featureType": "all",
"elementType": "labels.text",
"stylers": [
{
"saturation": -100
}
]
},
{
"featureType": "poi",
"elementType": "geometry",
"stylers": [
{
"color": "#eeeeee"
}
]
},
{
"featureType": "poi.park",
"elementType": "geometry",
"stylers": [
{
"color": "#e5e5e5"
}
]
},
{
"featureType": "road",
"elementType": "geometry",
"stylers": [
{
"color": "#ffffff"
}
]
},
{
"featureType": "road.highway",
"elementType": "geometry",
"stylers": [
{
"color": "#dadada"
}
]
},
{
"featureType": "road.highway",
"elementType": "labels.icon",
"stylers": [
{
"lightness": 30
}
]
},
{
"featureType": "transit.line",
"elementType": "geometry",
"stylers": [
{
"color": "#e5e5e5"
}
]
},
{
"featureType": "transit.station",
"elementType": "geometry",
"stylers": [
{
"color": "#eeeeee"
}
]
},
{
"featureType": "water",
"elementType": "geometry",
"stylers": [
{
"color": "#c9c9c9"
}
]
}
]
[
{
"key": "h1",
"name": "Hughes H-1",
"lat": 38.8879,
"lng": -77.02085,
"level": "1"
},
{
"key": "voyager",
"name": "Rutan Voyager",
"lat": 38.8880,
"lng": -77.0199,
"level": "1"
},
{
"key": "spitfire",
"name": "Supermarine Spitfire",
"lat": 38.8879,
"lng": -77.0208,
"level": "2"
},
{
"key": "x29",
"name": "Grumman X-29",
"lat": 38.88845,
"lng": -77.01875,
"level": "2"
}
]
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment