├── Image
└── area.png
├── ZCChinaLocation.xcodeproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
└── project.pbxproj
├── ZCChinaLocation
├── ViewController.h
├── AppDelegate.h
├── main.m
├── Images.xcassets
│ └── AppIcon.appiconset
│ │ └── Contents.json
├── ZCChinaLocation
│ ├── ZCChinaLocation.h
│ └── ZCChinaLocation.m
├── ViewController.m
├── Info.plist
├── AppDelegate.m
└── Base.lproj
│ ├── Main.storyboard
│ └── LaunchScreen.xib
├── README.md
└── ZCChinaLocationTests
├── Info.plist
└── ZCChinaLocationTests.m
/Image/area.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zcsoft/ZCChinaLocation/HEAD/Image/area.png
--------------------------------------------------------------------------------
/ZCChinaLocation.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ZCChinaLocation/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // ZCChinaLocation
4 | //
5 | // Created by cuibo on 5/12/15.
6 | // Copyright (c) 2015 cuibo. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/ZCChinaLocation/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // ZCChinaLocation
4 | //
5 | // Created by cuibo on 5/12/15.
6 | // Copyright (c) 2015 cuibo. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/ZCChinaLocation/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // ZCChinaLocation
4 | //
5 | // Created by cuibo on 5/12/15.
6 | // Copyright (c) 2015 cuibo. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ZCChinaLocation
2 |
3 | 基本思路是:把整个行政区域划分为几个小的矩形,然后再排除掉一些矩形区域。只要一个点在限定的区域内,并且不在排除的区域内,则判定成功,否则失败。下图中蓝色区域为限定区域,红色区域为排除区域。这种快速判定的方法是从Nokia map中挖掘出来的。
4 |
5 |
6 | 优点:快速,相对准确;
7 |
8 | 缺点:边界误差较大
9 |
10 | 围栏位置:
11 |
12 | 
13 |
14 |
15 | # 使用方法:
16 |
17 | 将ZCChinaLocation.h和ZCChinaLocation.m添加到工程;
18 |
19 | //判断纬度:44.042156, 经度132.759178是否在中国境内
20 | BOOL ischina = [[ZCChinaLocation shared] isInsideChina:(CLLocationCoordinate2D){44.042156,132.759178}];
21 |
--------------------------------------------------------------------------------
/ZCChinaLocation/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/ZCChinaLocation/ZCChinaLocation/ZCChinaLocation.h:
--------------------------------------------------------------------------------
1 | //
2 | // ZCChinaLocation.h
3 | // ZCChinaLocation
4 | //
5 | // Created by cuibo on 5/12/15.
6 | // Copyright (c) 2015 cuibo. All rights reserved.
7 | //
8 |
9 |
10 | //
11 | //文档:
12 | //http://blog.csdn.net/cuibo1123/article/details/45691631
13 | //
14 | //使用方法:
15 | //
16 | //将ZCChinaLocation.h和ZCChinaLocation.m添加到工程;
17 | //
18 | //判断纬度:44.042156, 经度132.759178是否在中国境内
19 | //BOOL ischina = [[ZCChinaLocation shared] isInsideChina:(CLLocationCoordinate2D){44.042156,132.759178}];
20 | //
21 |
22 |
23 | #import
24 | #import
25 |
26 | @interface ZCChinaLocation : NSObject
27 |
28 | //单例
29 | + (instancetype)shared;
30 |
31 | //判断location是否在中国
32 | - (BOOL)isInsideChina:(CLLocationCoordinate2D)location;
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/ZCChinaLocationTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | zconly.$(PRODUCT_NAME:rfc1034identifier)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/ZCChinaLocation/ViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.m
3 | // ZCChinaLocation
4 | //
5 | // Created by cuibo on 5/12/15.
6 | // Copyright (c) 2015 cuibo. All rights reserved.
7 | //
8 |
9 | #import "ViewController.h"
10 | #import "ZCChinaLocation.h"
11 |
12 | @interface ViewController ()
13 |
14 | @end
15 |
16 | @implementation ViewController
17 |
18 | - (void)viewDidLoad {
19 | [super viewDidLoad];
20 | // Do any additional setup after loading the view, typically from a nib.
21 | }
22 |
23 | - (void)didReceiveMemoryWarning {
24 | [super didReceiveMemoryWarning];
25 | // Dispose of any resources that can be recreated.
26 | }
27 |
28 | - (IBAction)buttonAction:(id)sender
29 | {
30 | //判断纬度:44.042156, 经度132.759178是否在中国境内
31 | BOOL ischina = [[ZCChinaLocation shared] isInsideChina:(CLLocationCoordinate2D){44.042156,132.759178}];
32 | NSLog(@"%d", ischina);
33 | }
34 |
35 | @end
36 |
37 |
--------------------------------------------------------------------------------
/ZCChinaLocationTests/ZCChinaLocationTests.m:
--------------------------------------------------------------------------------
1 | //
2 | // ZCChinaLocationTests.m
3 | // ZCChinaLocationTests
4 | //
5 | // Created by cuibo on 5/12/15.
6 | // Copyright (c) 2015 cuibo. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface ZCChinaLocationTests : XCTestCase
13 |
14 | @end
15 |
16 | @implementation ZCChinaLocationTests
17 |
18 | - (void)setUp {
19 | [super setUp];
20 | // Put setup code here. This method is called before the invocation of each test method in the class.
21 | }
22 |
23 | - (void)tearDown {
24 | // Put teardown code here. This method is called after the invocation of each test method in the class.
25 | [super tearDown];
26 | }
27 |
28 | - (void)testExample {
29 | // This is an example of a functional test case.
30 | XCTAssert(YES, @"Pass");
31 | }
32 |
33 | - (void)testPerformanceExample {
34 | // This is an example of a performance test case.
35 | [self measureBlock:^{
36 | // Put the code you want to measure the time of here.
37 | }];
38 | }
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/ZCChinaLocation/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | zconly.$(PRODUCT_NAME:rfc1034identifier)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/ZCChinaLocation/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // ZCChinaLocation
4 | //
5 | // Created by cuibo on 5/12/15.
6 | // Copyright (c) 2015 cuibo. All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 |
11 | @interface AppDelegate ()
12 |
13 | @end
14 |
15 | @implementation AppDelegate
16 |
17 |
18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
19 | // Override point for customization after application launch.
20 | return YES;
21 | }
22 |
23 | - (void)applicationWillResignActive:(UIApplication *)application {
24 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
25 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
26 | }
27 |
28 | - (void)applicationDidEnterBackground:(UIApplication *)application {
29 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
30 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
31 | }
32 |
33 | - (void)applicationWillEnterForeground:(UIApplication *)application {
34 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
35 | }
36 |
37 | - (void)applicationDidBecomeActive:(UIApplication *)application {
38 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
39 | }
40 |
41 | - (void)applicationWillTerminate:(UIApplication *)application {
42 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
43 | }
44 |
45 | @end
46 |
--------------------------------------------------------------------------------
/ZCChinaLocation/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/ZCChinaLocation/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
20 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/ZCChinaLocation/ZCChinaLocation/ZCChinaLocation.m:
--------------------------------------------------------------------------------
1 | //
2 | // ZCChinaLocation.m
3 | // ZCChinaLocation
4 | //
5 | // Created by cuibo on 5/12/15.
6 | // Copyright (c) 2015 cuibo. All rights reserved.
7 | //
8 |
9 | #import "ZCChinaLocation.h"
10 |
11 | //矩形
12 | @interface Rectangle : NSObject
13 |
14 | @property(assign, nonatomic) double West;
15 | @property(assign, nonatomic) double North;
16 | @property(assign, nonatomic) double East;
17 | @property(assign, nonatomic) double South;
18 |
19 | @end
20 |
21 | @implementation Rectangle
22 |
23 | + (Rectangle *)rectangleWithLa1:(double)latitude1 lo1:(double)longitude1 la2:(double)latitude2 lo2:(double)longitude2
24 | {
25 | return [[Rectangle alloc]
26 | initWithLa1:latitude1 lo1:longitude1 la2:latitude2 lo2:longitude2];
27 | }
28 |
29 | - (instancetype)initWithLa1:(double)latitude1 lo1:(double)longitude1 la2:(double)latitude2 lo2:(double)longitude2
30 | {
31 | self = [super init];
32 | if (self)
33 | {
34 | self.West = MIN(longitude1, longitude2);
35 | self.North = MAX(latitude1, latitude2);
36 | self.East = MAX(longitude1, longitude2);
37 | self.South = MIN(latitude1, latitude2);
38 | }
39 | return self;
40 | }
41 |
42 | @end
43 |
44 |
45 |
46 | @interface ZCChinaLocation()
47 |
48 | @property(strong, nonatomic)NSArray *regionRectangle;
49 | @property(strong, nonatomic)NSArray *excludeRectangle;
50 |
51 | @end
52 |
53 | @implementation ZCChinaLocation
54 |
55 | static id _shared;
56 | + (instancetype)shared
57 | {
58 | static dispatch_once_t _onceToken;
59 | dispatch_once(&_onceToken, ^{
60 | _shared = [[self alloc] init];
61 | });
62 | return _shared;
63 | }
64 |
65 | - (instancetype)init
66 | {
67 | self = [super init];
68 | if (self)
69 | {
70 | //范围矩形列表
71 | self.regionRectangle = [[NSArray alloc] initWithObjects:
72 | [Rectangle rectangleWithLa1:49.220400 lo1:079.446200 la2:42.889900 lo2:096.330000],
73 | [Rectangle rectangleWithLa1:54.141500 lo1:109.687200 la2:39.374200 lo2:135.000200],
74 | [Rectangle rectangleWithLa1:42.889900 lo1:073.124600 la2:29.529700 lo2:124.143255],
75 | [Rectangle rectangleWithLa1:29.529700 lo1:082.968400 la2:26.718600 lo2:097.035200],
76 | [Rectangle rectangleWithLa1:29.529700 lo1:097.025300 la2:20.414096 lo2:124.367395],
77 | [Rectangle rectangleWithLa1:20.414096 lo1:107.975793 la2:17.871542 lo2:111.744104],
78 | nil];
79 |
80 | //范围内排除的矩形列表
81 | self.excludeRectangle = [[NSArray alloc] initWithObjects:
82 | [Rectangle rectangleWithLa1:25.398623 lo1:119.921265 la2:21.785006 lo2:122.497559],
83 | [Rectangle rectangleWithLa1:22.284000 lo1:101.865200 la2:20.098800 lo2:106.665000],
84 | [Rectangle rectangleWithLa1:21.542200 lo1:106.452500 la2:20.487800 lo2:108.051000],
85 | [Rectangle rectangleWithLa1:55.817500 lo1:109.032300 la2:50.325700 lo2:119.127000],
86 | [Rectangle rectangleWithLa1:55.817500 lo1:127.456800 la2:49.557400 lo2:137.022700],
87 | [Rectangle rectangleWithLa1:44.892200 lo1:131.266200 la2:42.569200 lo2:137.022700],
88 | nil];
89 | }
90 | return self;
91 | }
92 |
93 | //判断location是否在中国
94 | - (BOOL)isInsideChina:(CLLocationCoordinate2D)location
95 | {
96 | for (int i = 0; i < self.regionRectangle.count; i++)
97 | {
98 | if([self InRectangle:self.regionRectangle[i] location:location])
99 | {
100 | for (int j = 0; j < self.excludeRectangle.count; j++)
101 | {
102 | if ([self InRectangle:self.excludeRectangle[j] location:location])
103 | {
104 | return false;
105 | }
106 | }
107 | return true;
108 | }
109 | }
110 | return false;
111 | }
112 |
113 | //点是否在矩形内
114 | - (BOOL)InRectangle:(Rectangle *)rect location:(CLLocationCoordinate2D)location
115 | {
116 | return rect.West <= location.longitude && rect.East >= location.longitude && rect.North >= location.latitude && rect.South <= location.latitude;
117 | }
118 |
119 | @end
120 |
121 |
122 |
123 |
--------------------------------------------------------------------------------
/ZCChinaLocation.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | C0326B431B020872001C56CF /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C0326B421B020872001C56CF /* main.m */; };
11 | C0326B461B020872001C56CF /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C0326B451B020872001C56CF /* AppDelegate.m */; };
12 | C0326B491B020872001C56CF /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C0326B481B020872001C56CF /* ViewController.m */; };
13 | C0326B4C1B020872001C56CF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C0326B4A1B020872001C56CF /* Main.storyboard */; };
14 | C0326B4E1B020872001C56CF /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C0326B4D1B020872001C56CF /* Images.xcassets */; };
15 | C0326B511B020872001C56CF /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = C0326B4F1B020872001C56CF /* LaunchScreen.xib */; };
16 | C0326B5D1B020872001C56CF /* ZCChinaLocationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C0326B5C1B020872001C56CF /* ZCChinaLocationTests.m */; };
17 | C0326B691B0208CC001C56CF /* ZCChinaLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = C0326B681B0208CC001C56CF /* ZCChinaLocation.m */; };
18 | /* End PBXBuildFile section */
19 |
20 | /* Begin PBXContainerItemProxy section */
21 | C0326B571B020872001C56CF /* PBXContainerItemProxy */ = {
22 | isa = PBXContainerItemProxy;
23 | containerPortal = C0326B351B020872001C56CF /* Project object */;
24 | proxyType = 1;
25 | remoteGlobalIDString = C0326B3C1B020872001C56CF;
26 | remoteInfo = ZCChinaLocation;
27 | };
28 | /* End PBXContainerItemProxy section */
29 |
30 | /* Begin PBXFileReference section */
31 | C0326B3D1B020872001C56CF /* ZCChinaLocation.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ZCChinaLocation.app; sourceTree = BUILT_PRODUCTS_DIR; };
32 | C0326B411B020872001C56CF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
33 | C0326B421B020872001C56CF /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
34 | C0326B441B020872001C56CF /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
35 | C0326B451B020872001C56CF /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
36 | C0326B471B020872001C56CF /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; };
37 | C0326B481B020872001C56CF /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; };
38 | C0326B4B1B020872001C56CF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
39 | C0326B4D1B020872001C56CF /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; };
40 | C0326B501B020872001C56CF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; };
41 | C0326B561B020872001C56CF /* ZCChinaLocationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ZCChinaLocationTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
42 | C0326B5B1B020872001C56CF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
43 | C0326B5C1B020872001C56CF /* ZCChinaLocationTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ZCChinaLocationTests.m; sourceTree = ""; };
44 | C0326B671B0208CC001C56CF /* ZCChinaLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZCChinaLocation.h; sourceTree = ""; };
45 | C0326B681B0208CC001C56CF /* ZCChinaLocation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZCChinaLocation.m; sourceTree = ""; };
46 | /* End PBXFileReference section */
47 |
48 | /* Begin PBXFrameworksBuildPhase section */
49 | C0326B3A1B020872001C56CF /* Frameworks */ = {
50 | isa = PBXFrameworksBuildPhase;
51 | buildActionMask = 2147483647;
52 | files = (
53 | );
54 | runOnlyForDeploymentPostprocessing = 0;
55 | };
56 | C0326B531B020872001C56CF /* Frameworks */ = {
57 | isa = PBXFrameworksBuildPhase;
58 | buildActionMask = 2147483647;
59 | files = (
60 | );
61 | runOnlyForDeploymentPostprocessing = 0;
62 | };
63 | /* End PBXFrameworksBuildPhase section */
64 |
65 | /* Begin PBXGroup section */
66 | C0326B341B020872001C56CF = {
67 | isa = PBXGroup;
68 | children = (
69 | C0326B3F1B020872001C56CF /* ZCChinaLocation */,
70 | C0326B591B020872001C56CF /* ZCChinaLocationTests */,
71 | C0326B3E1B020872001C56CF /* Products */,
72 | );
73 | sourceTree = "";
74 | };
75 | C0326B3E1B020872001C56CF /* Products */ = {
76 | isa = PBXGroup;
77 | children = (
78 | C0326B3D1B020872001C56CF /* ZCChinaLocation.app */,
79 | C0326B561B020872001C56CF /* ZCChinaLocationTests.xctest */,
80 | );
81 | name = Products;
82 | sourceTree = "";
83 | };
84 | C0326B3F1B020872001C56CF /* ZCChinaLocation */ = {
85 | isa = PBXGroup;
86 | children = (
87 | C0326B661B0208BE001C56CF /* ZCChinaLocation */,
88 | C0326B441B020872001C56CF /* AppDelegate.h */,
89 | C0326B451B020872001C56CF /* AppDelegate.m */,
90 | C0326B471B020872001C56CF /* ViewController.h */,
91 | C0326B481B020872001C56CF /* ViewController.m */,
92 | C0326B4A1B020872001C56CF /* Main.storyboard */,
93 | C0326B4D1B020872001C56CF /* Images.xcassets */,
94 | C0326B4F1B020872001C56CF /* LaunchScreen.xib */,
95 | C0326B401B020872001C56CF /* Supporting Files */,
96 | );
97 | path = ZCChinaLocation;
98 | sourceTree = "";
99 | };
100 | C0326B401B020872001C56CF /* Supporting Files */ = {
101 | isa = PBXGroup;
102 | children = (
103 | C0326B411B020872001C56CF /* Info.plist */,
104 | C0326B421B020872001C56CF /* main.m */,
105 | );
106 | name = "Supporting Files";
107 | sourceTree = "";
108 | };
109 | C0326B591B020872001C56CF /* ZCChinaLocationTests */ = {
110 | isa = PBXGroup;
111 | children = (
112 | C0326B5C1B020872001C56CF /* ZCChinaLocationTests.m */,
113 | C0326B5A1B020872001C56CF /* Supporting Files */,
114 | );
115 | path = ZCChinaLocationTests;
116 | sourceTree = "";
117 | };
118 | C0326B5A1B020872001C56CF /* Supporting Files */ = {
119 | isa = PBXGroup;
120 | children = (
121 | C0326B5B1B020872001C56CF /* Info.plist */,
122 | );
123 | name = "Supporting Files";
124 | sourceTree = "";
125 | };
126 | C0326B661B0208BE001C56CF /* ZCChinaLocation */ = {
127 | isa = PBXGroup;
128 | children = (
129 | C0326B671B0208CC001C56CF /* ZCChinaLocation.h */,
130 | C0326B681B0208CC001C56CF /* ZCChinaLocation.m */,
131 | );
132 | path = ZCChinaLocation;
133 | sourceTree = "";
134 | };
135 | /* End PBXGroup section */
136 |
137 | /* Begin PBXNativeTarget section */
138 | C0326B3C1B020872001C56CF /* ZCChinaLocation */ = {
139 | isa = PBXNativeTarget;
140 | buildConfigurationList = C0326B601B020872001C56CF /* Build configuration list for PBXNativeTarget "ZCChinaLocation" */;
141 | buildPhases = (
142 | C0326B391B020872001C56CF /* Sources */,
143 | C0326B3A1B020872001C56CF /* Frameworks */,
144 | C0326B3B1B020872001C56CF /* Resources */,
145 | );
146 | buildRules = (
147 | );
148 | dependencies = (
149 | );
150 | name = ZCChinaLocation;
151 | productName = ZCChinaLocation;
152 | productReference = C0326B3D1B020872001C56CF /* ZCChinaLocation.app */;
153 | productType = "com.apple.product-type.application";
154 | };
155 | C0326B551B020872001C56CF /* ZCChinaLocationTests */ = {
156 | isa = PBXNativeTarget;
157 | buildConfigurationList = C0326B631B020872001C56CF /* Build configuration list for PBXNativeTarget "ZCChinaLocationTests" */;
158 | buildPhases = (
159 | C0326B521B020872001C56CF /* Sources */,
160 | C0326B531B020872001C56CF /* Frameworks */,
161 | C0326B541B020872001C56CF /* Resources */,
162 | );
163 | buildRules = (
164 | );
165 | dependencies = (
166 | C0326B581B020872001C56CF /* PBXTargetDependency */,
167 | );
168 | name = ZCChinaLocationTests;
169 | productName = ZCChinaLocationTests;
170 | productReference = C0326B561B020872001C56CF /* ZCChinaLocationTests.xctest */;
171 | productType = "com.apple.product-type.bundle.unit-test";
172 | };
173 | /* End PBXNativeTarget section */
174 |
175 | /* Begin PBXProject section */
176 | C0326B351B020872001C56CF /* Project object */ = {
177 | isa = PBXProject;
178 | attributes = {
179 | LastUpgradeCheck = 0630;
180 | ORGANIZATIONNAME = cuibo;
181 | TargetAttributes = {
182 | C0326B3C1B020872001C56CF = {
183 | CreatedOnToolsVersion = 6.3.1;
184 | };
185 | C0326B551B020872001C56CF = {
186 | CreatedOnToolsVersion = 6.3.1;
187 | TestTargetID = C0326B3C1B020872001C56CF;
188 | };
189 | };
190 | };
191 | buildConfigurationList = C0326B381B020872001C56CF /* Build configuration list for PBXProject "ZCChinaLocation" */;
192 | compatibilityVersion = "Xcode 3.2";
193 | developmentRegion = English;
194 | hasScannedForEncodings = 0;
195 | knownRegions = (
196 | en,
197 | Base,
198 | );
199 | mainGroup = C0326B341B020872001C56CF;
200 | productRefGroup = C0326B3E1B020872001C56CF /* Products */;
201 | projectDirPath = "";
202 | projectRoot = "";
203 | targets = (
204 | C0326B3C1B020872001C56CF /* ZCChinaLocation */,
205 | C0326B551B020872001C56CF /* ZCChinaLocationTests */,
206 | );
207 | };
208 | /* End PBXProject section */
209 |
210 | /* Begin PBXResourcesBuildPhase section */
211 | C0326B3B1B020872001C56CF /* Resources */ = {
212 | isa = PBXResourcesBuildPhase;
213 | buildActionMask = 2147483647;
214 | files = (
215 | C0326B4C1B020872001C56CF /* Main.storyboard in Resources */,
216 | C0326B511B020872001C56CF /* LaunchScreen.xib in Resources */,
217 | C0326B4E1B020872001C56CF /* Images.xcassets in Resources */,
218 | );
219 | runOnlyForDeploymentPostprocessing = 0;
220 | };
221 | C0326B541B020872001C56CF /* Resources */ = {
222 | isa = PBXResourcesBuildPhase;
223 | buildActionMask = 2147483647;
224 | files = (
225 | );
226 | runOnlyForDeploymentPostprocessing = 0;
227 | };
228 | /* End PBXResourcesBuildPhase section */
229 |
230 | /* Begin PBXSourcesBuildPhase section */
231 | C0326B391B020872001C56CF /* Sources */ = {
232 | isa = PBXSourcesBuildPhase;
233 | buildActionMask = 2147483647;
234 | files = (
235 | C0326B491B020872001C56CF /* ViewController.m in Sources */,
236 | C0326B691B0208CC001C56CF /* ZCChinaLocation.m in Sources */,
237 | C0326B461B020872001C56CF /* AppDelegate.m in Sources */,
238 | C0326B431B020872001C56CF /* main.m in Sources */,
239 | );
240 | runOnlyForDeploymentPostprocessing = 0;
241 | };
242 | C0326B521B020872001C56CF /* Sources */ = {
243 | isa = PBXSourcesBuildPhase;
244 | buildActionMask = 2147483647;
245 | files = (
246 | C0326B5D1B020872001C56CF /* ZCChinaLocationTests.m in Sources */,
247 | );
248 | runOnlyForDeploymentPostprocessing = 0;
249 | };
250 | /* End PBXSourcesBuildPhase section */
251 |
252 | /* Begin PBXTargetDependency section */
253 | C0326B581B020872001C56CF /* PBXTargetDependency */ = {
254 | isa = PBXTargetDependency;
255 | target = C0326B3C1B020872001C56CF /* ZCChinaLocation */;
256 | targetProxy = C0326B571B020872001C56CF /* PBXContainerItemProxy */;
257 | };
258 | /* End PBXTargetDependency section */
259 |
260 | /* Begin PBXVariantGroup section */
261 | C0326B4A1B020872001C56CF /* Main.storyboard */ = {
262 | isa = PBXVariantGroup;
263 | children = (
264 | C0326B4B1B020872001C56CF /* Base */,
265 | );
266 | name = Main.storyboard;
267 | sourceTree = "";
268 | };
269 | C0326B4F1B020872001C56CF /* LaunchScreen.xib */ = {
270 | isa = PBXVariantGroup;
271 | children = (
272 | C0326B501B020872001C56CF /* Base */,
273 | );
274 | name = LaunchScreen.xib;
275 | sourceTree = "";
276 | };
277 | /* End PBXVariantGroup section */
278 |
279 | /* Begin XCBuildConfiguration section */
280 | C0326B5E1B020872001C56CF /* Debug */ = {
281 | isa = XCBuildConfiguration;
282 | buildSettings = {
283 | ALWAYS_SEARCH_USER_PATHS = NO;
284 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
285 | CLANG_CXX_LIBRARY = "libc++";
286 | CLANG_ENABLE_MODULES = YES;
287 | CLANG_ENABLE_OBJC_ARC = YES;
288 | CLANG_WARN_BOOL_CONVERSION = YES;
289 | CLANG_WARN_CONSTANT_CONVERSION = YES;
290 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
291 | CLANG_WARN_EMPTY_BODY = YES;
292 | CLANG_WARN_ENUM_CONVERSION = YES;
293 | CLANG_WARN_INT_CONVERSION = YES;
294 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
295 | CLANG_WARN_UNREACHABLE_CODE = YES;
296 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
297 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
298 | COPY_PHASE_STRIP = NO;
299 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
300 | ENABLE_STRICT_OBJC_MSGSEND = YES;
301 | GCC_C_LANGUAGE_STANDARD = gnu99;
302 | GCC_DYNAMIC_NO_PIC = NO;
303 | GCC_NO_COMMON_BLOCKS = YES;
304 | GCC_OPTIMIZATION_LEVEL = 0;
305 | GCC_PREPROCESSOR_DEFINITIONS = (
306 | "DEBUG=1",
307 | "$(inherited)",
308 | );
309 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
310 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
311 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
312 | GCC_WARN_UNDECLARED_SELECTOR = YES;
313 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
314 | GCC_WARN_UNUSED_FUNCTION = YES;
315 | GCC_WARN_UNUSED_VARIABLE = YES;
316 | IPHONEOS_DEPLOYMENT_TARGET = 8.3;
317 | MTL_ENABLE_DEBUG_INFO = YES;
318 | ONLY_ACTIVE_ARCH = YES;
319 | SDKROOT = iphoneos;
320 | };
321 | name = Debug;
322 | };
323 | C0326B5F1B020872001C56CF /* Release */ = {
324 | isa = XCBuildConfiguration;
325 | buildSettings = {
326 | ALWAYS_SEARCH_USER_PATHS = NO;
327 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
328 | CLANG_CXX_LIBRARY = "libc++";
329 | CLANG_ENABLE_MODULES = YES;
330 | CLANG_ENABLE_OBJC_ARC = YES;
331 | CLANG_WARN_BOOL_CONVERSION = YES;
332 | CLANG_WARN_CONSTANT_CONVERSION = YES;
333 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
334 | CLANG_WARN_EMPTY_BODY = YES;
335 | CLANG_WARN_ENUM_CONVERSION = YES;
336 | CLANG_WARN_INT_CONVERSION = YES;
337 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
338 | CLANG_WARN_UNREACHABLE_CODE = YES;
339 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
340 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
341 | COPY_PHASE_STRIP = NO;
342 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
343 | ENABLE_NS_ASSERTIONS = NO;
344 | ENABLE_STRICT_OBJC_MSGSEND = YES;
345 | GCC_C_LANGUAGE_STANDARD = gnu99;
346 | GCC_NO_COMMON_BLOCKS = YES;
347 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
348 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
349 | GCC_WARN_UNDECLARED_SELECTOR = YES;
350 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
351 | GCC_WARN_UNUSED_FUNCTION = YES;
352 | GCC_WARN_UNUSED_VARIABLE = YES;
353 | IPHONEOS_DEPLOYMENT_TARGET = 8.3;
354 | MTL_ENABLE_DEBUG_INFO = NO;
355 | SDKROOT = iphoneos;
356 | VALIDATE_PRODUCT = YES;
357 | };
358 | name = Release;
359 | };
360 | C0326B611B020872001C56CF /* Debug */ = {
361 | isa = XCBuildConfiguration;
362 | buildSettings = {
363 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
364 | INFOPLIST_FILE = ZCChinaLocation/Info.plist;
365 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
366 | PRODUCT_NAME = "$(TARGET_NAME)";
367 | };
368 | name = Debug;
369 | };
370 | C0326B621B020872001C56CF /* Release */ = {
371 | isa = XCBuildConfiguration;
372 | buildSettings = {
373 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
374 | INFOPLIST_FILE = ZCChinaLocation/Info.plist;
375 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
376 | PRODUCT_NAME = "$(TARGET_NAME)";
377 | };
378 | name = Release;
379 | };
380 | C0326B641B020872001C56CF /* Debug */ = {
381 | isa = XCBuildConfiguration;
382 | buildSettings = {
383 | BUNDLE_LOADER = "$(TEST_HOST)";
384 | FRAMEWORK_SEARCH_PATHS = (
385 | "$(SDKROOT)/Developer/Library/Frameworks",
386 | "$(inherited)",
387 | );
388 | GCC_PREPROCESSOR_DEFINITIONS = (
389 | "DEBUG=1",
390 | "$(inherited)",
391 | );
392 | INFOPLIST_FILE = ZCChinaLocationTests/Info.plist;
393 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
394 | PRODUCT_NAME = "$(TARGET_NAME)";
395 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ZCChinaLocation.app/ZCChinaLocation";
396 | };
397 | name = Debug;
398 | };
399 | C0326B651B020872001C56CF /* Release */ = {
400 | isa = XCBuildConfiguration;
401 | buildSettings = {
402 | BUNDLE_LOADER = "$(TEST_HOST)";
403 | FRAMEWORK_SEARCH_PATHS = (
404 | "$(SDKROOT)/Developer/Library/Frameworks",
405 | "$(inherited)",
406 | );
407 | INFOPLIST_FILE = ZCChinaLocationTests/Info.plist;
408 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
409 | PRODUCT_NAME = "$(TARGET_NAME)";
410 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ZCChinaLocation.app/ZCChinaLocation";
411 | };
412 | name = Release;
413 | };
414 | /* End XCBuildConfiguration section */
415 |
416 | /* Begin XCConfigurationList section */
417 | C0326B381B020872001C56CF /* Build configuration list for PBXProject "ZCChinaLocation" */ = {
418 | isa = XCConfigurationList;
419 | buildConfigurations = (
420 | C0326B5E1B020872001C56CF /* Debug */,
421 | C0326B5F1B020872001C56CF /* Release */,
422 | );
423 | defaultConfigurationIsVisible = 0;
424 | defaultConfigurationName = Release;
425 | };
426 | C0326B601B020872001C56CF /* Build configuration list for PBXNativeTarget "ZCChinaLocation" */ = {
427 | isa = XCConfigurationList;
428 | buildConfigurations = (
429 | C0326B611B020872001C56CF /* Debug */,
430 | C0326B621B020872001C56CF /* Release */,
431 | );
432 | defaultConfigurationIsVisible = 0;
433 | };
434 | C0326B631B020872001C56CF /* Build configuration list for PBXNativeTarget "ZCChinaLocationTests" */ = {
435 | isa = XCConfigurationList;
436 | buildConfigurations = (
437 | C0326B641B020872001C56CF /* Debug */,
438 | C0326B651B020872001C56CF /* Release */,
439 | );
440 | defaultConfigurationIsVisible = 0;
441 | };
442 | /* End XCConfigurationList section */
443 | };
444 | rootObject = C0326B351B020872001C56CF /* Project object */;
445 | }
446 |
--------------------------------------------------------------------------------