├── 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 | ![image](https://github.com/zcsoft/ZCChinaLocation/blob/master/Image/area.png) 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 | --------------------------------------------------------------------------------