我通过CoreLocation修复了当前位置.现在我想得到那些位于它附近(大约100英尺)的位置(来自现有的数据库).
我该如何开始?
更新:以下是Haversine公式的实现:http://www.jaimerios.com/? p = 39 (非常有用)
我想使用核心位置框架访问用户位置,但不向用户显示"允许访问您的位置"的消息,该用户在查看应用程序时会询问.
有没有办法隐藏这个核心位置框架的混乱.
提前致谢.
我是iPhone的编程新手,我跟着这本书.我坚持第4章,授权和核心位置的例子.
这是我到目前为止编写的代码:WhereamiAppdelegate.h
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
@interface WhereamiAppDelegate : NSObject <UIApplicationDelegate, CLLocationManagerDelegate> {
UIWindow *window;
CLLocation *locationManager;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@end
Run Code Online (Sandbox Code Playgroud)
这是实现文件:我只包含了我所做的更改.整个文件都在这里.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Create location manager.
locationManager = [[CLLocation alloc] init];
[locationManager setDelegate:self];
[locationManager setDistanceFilter:kCLDistanceFilterNone];
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[locationManager startUpdatingLocation];
[self.window makeKeyAndVisible];
return YES;
}
- (void)dealloc
{
[locationManager setDelegate:nil];
[_window release];
[super dealloc];
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
NSLog(@"%@",newLocation);
}
- (void)locationManager:(CLLocationManager …Run Code Online (Sandbox Code Playgroud) 是否可以使用iOS 5 API检查给定的经度和纬度是否属于给定的GeoFence?怎么样?
我一直在为ios编程,我需要得到地址.如何以json或其他格式从纬度和经度获得完整地址?没有互联网连接我可以得到它吗?感谢您的关注.
我目前正在通过Xcode构建一个iOS应用程序,它使用了corelocation.framework,但不幸的是我遇到了一些麻烦.我下载了Apple的LocateMe示例应用程序,当我通过模拟器运行它时,它运行正常(没有错误或警告).
然后,我构建了一个空的单页应用程序,并将corelocation.framework文件添加到其中.当我编译并运行它时,我收到一个警告:
(null): Ignoring file/Users/Andrew/Documents/GoogleDrive/Developer/
Xcode/Apps/GetLocation/CoreLocation.framework/CoreLocation, file
was built for unsupported file format ( 0xce 0xfa 0xed 0xfe 0x c 0x
0 0x 0 0x 0 0x 9 0x 0 0x 0 0x 0 0x 6 0x 0 0x 0 0x 0 ) which is not
the architecture being linked (i386):/Users/Andrew/Documents/
GoogleDrive/Developer/Xcode/Apps/GetLocation/CoreLocation.framework
/CoreLocation
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用Finder找到框架并添加它,并将框架从Apple的应用程序拖到我的应用程序中.两者都生成相同的警告.
除了文件目录似乎很好(这是我的应用程序存储的地方)之外,我不能说上述错误,而i386我相信代表我的MacBook Air的集成图形芯片组.
我也尝试将Apple的应用程序降低到基本水平,但这很难 - 他们决定制作一个相当复杂的应用来代表这项技术.
不幸的是,我对这一切的了解需要改进,我确实感觉自己正在用这个任务跳起来,但是我有一个赌注 - 需要在15日之前完成这项工作!
因此,如果有人能提供关于为什么要生成此警告的一些指导,以及我如何解决它,那将非常感激.
UPDATE
我仔细看了一下Apple的LocateMe应用程序,我注意到这个版本适用于iOS 3.2.当我将其更改为iOS 5.1时,除了单个错误外,一切都很好 - 不推荐使用locationServicesEnabled.
我的iOS应用程序有时会被杀死,即使我在"必需的背景模式"下的plist中放置了"应用程序寄存器进行位置更新".
- (void)applicationDidEnterBackground:(UIApplication *)application
{
NSDate *dateEnteredIntoBackground = [NSDate date];
FSLog(@"*** ENTERING BACKGROUND ***");
[application beginBackgroundTaskWithExpirationHandler:^{
NSDate *dateOfTermination = [NSDate date];
}];
}
Run Code Online (Sandbox Code Playgroud)
在监视上面的代码的同时,当它被踢出时,NSDate对象总是相隔10分钟.
但是:为了让事情更加令人困惑,我很多时候应用程序很乐意在后台运行超过30分钟而不会终止.作为一项额外的测试,我将iPhone置于法拉第笼中,以确保不会调用位置委托更新(通过回读书面日志文件来确认); 所以似乎可以排除.
任何线索/建议?
谢谢
卡尔.
{
...
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
}
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
NSLog(@"myLocation1: %@",[locations lastObject]);
myLocation = [locations lastObject];
NSLog(@"myLocation2: %@",[locations lastObject]);
[manager stopUpdatingLocation];
[self doSomethingWithLocation];
}
Run Code Online (Sandbox Code Playgroud)
目前我在40.000,40.000的位置.我正在关闭我的应用并将位置更改为10.000,10.000
再次进入应用程序并运行[locationManager startUpdatingLocation];我的日志将显示:
myLocation1: <+40.00000000,+40.00000000>
myLocation2: <+40.00000000,+40.00000000>
Run Code Online (Sandbox Code Playgroud)
如果我[locationManager startUpdatingLocation];再次触发,我的日志将显示:
myLocation1: <+10.00000000,+10.00000000>
myLocation2: <+10.00000000,+10.00000000>
Run Code Online (Sandbox Code Playgroud)
如何拨打didUpdateLocations一次并仍然获取当前位置?我应该使用其他代表吗?
我想我可以把它放在stopUpdatingLocation里面doSomethingWithLocation并在doSomethingWithLocation经过某种延迟之后运行,以便更新正确的位置,但我确信这不是它的意思.
谢谢
我尝试使用coreLocation在Apple Watch上获取用户当前位置.每当我运行时-[CLLocationManager requestLocation],应用程序退出并发出以下错误.
2016-02-07 16:38:39.392 Placescope Apple Watch Extension[6255:1471552] *** Assertion failure in -[CLLocationManager requestLocation], /BuildRoot/Library/Caches/com.apple.xbs/Sources/CoreLocationFramework_Sim/CoreLocation-1861.3.25.31/Framework/CoreLocation/CLLocationManager.m:816
2016-02-07 16:38:39.395 Placescope Apple Watch Extension[6255:1471552] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Delegate must respond to locationManager:didUpdateLocations:'
*** First throw call stack:
(
0 CoreFoundation 0x00bb9fc4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x00671df4 objc_exception_throw + 50
2 CoreFoundation 0x00bb9e5a +[NSException raise:format:arguments:] + 138
3 Foundation 0x0029a008 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 118
4 CoreLocation 0x0013a4f9 CLClientGetCapabilities + 12683
5 Placescope Apple Watch … 我尝试使用CoreLocation和Swift来跟踪用户的位置:(
下面你可以找到可能的ViewController.swift文件的代码.)
但是代码似乎没有像我预期的那样工作,因为我每次启动应用程序时仍然会得到相同的错误:
我确定这就是为什么我无法从locationManager()打印出当前位置的函数中得到结果的问题.
它说 "Cannot assign value of type 'ViewController' to type 'CLLocationManagerDelegate?'"
import UIKit
import CoreLocation
class ViewController: UIViewController, WKUIDelegate {
override func viewDidLoad() {
super.viewDidLoad()
if CLLocationManager.locationServicesEnabled() {
print("CLLocationManager is available")
locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers
locationManager.delegate = self
locationManager.startUpdatingLocation()
}
}
let locationManager = CLLocationManager()
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if let location = locations.first {
print(location.coordinate)
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在有人如何解决这个问题? - 非常感谢任何帮助,感谢提前一百万.
core-location ×10
ios ×8
iphone ×4
objective-c ×3
gps ×2
cocoa-touch ×1
geofencing ×1
geolocation ×1
ipad ×1
location ×1
mkmapview ×1
swift ×1
watchkit ×1
xcode ×1