核心位置不适用于Apple Watch

ony

我有一个如下的GPX文件:

<?xml version="1.0" encoding="UTF-8"?>
<gpx
  version="1.0"
  creator="GPSBabel - http://www.gpsbabel.org"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://www.topografix.com/GPX/1/0"
  xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
<time>2015-04-03T15:04:33Z</time>
<bounds minlat="32.994533333" minlon="35.573600000" maxlat="33.176883333" maxlon="35.630866667"/>
<trk>
  <name>GNSSALTTRK</name>
  <desc>IGCHDRS~HFFXA035~HFPLTPILOTINCHARGE: pilot~HFCM2CREW2: not recorded~HFGTYGLIDERTYPE:unknown~HFGIDGLIDERID:unknown~HFDTM100GPSDATUM: WGS-1984~HFRFWFIRMWAREVERSION: 1.00~HFRHWHARDWAREVERSION: 2012~HFFTYFRTYPE: ParaWind by Dr. Edgar Bolender~HFGPSGPS:Smartphone~HFPRSPRESSALTSENSOR: Smartphone~HFCIDCOMPETITIONID:~HFCCLCOMPETITIONCLASS:~</desc>
<trkseg>
<trkpt lat="33.060316667" lon="35.625166667">
  <ele>88.000000</ele>
  <time>2014-08-23T03:58:58Z</time>
</trkpt>
<trkpt lat="33.061700000" lon="35.624750000">
  <ele>81.000000</ele>
  <time>2014-08-23T03:59:11Z</time>
</trkpt>
<trkpt lat="33.062650000" lon="35.624250000">
  <ele>83.000000</ele>
  <time>2014-08-23T03:59:21Z</time>
</trkpt>
<trkpt lat="33.064316667" lon="35.624033333">
  <ele>88.000000</ele>
  <time>2014-08-23T03:59:37Z</time>
</trkpt>
<trkpt lat="33.065833333" lon="35.623866667">
  <ele>86.000000</ele>
  <time>2014-08-23T03:59:51Z</time>
</trkpt>
<trkpt lat="33.066983333" lon="35.623500000">
  <ele>84.000000</ele>
  <time>2014-08-23T04:00:02Z</time>
</trkpt>
....

我将其添加到当前方案中并运行它,但未更改位置。我怀疑它与旧的timeTags有关,但是即使将系统时间更改为相关的GPX文件时间后,它也不会触发位置事件。

现在我怀疑我的模型做错了,因为该应用程序不要求用户使用位置(这是Apple Watch的应用程序)

#import "LocationModel.h"
#import <CoreLocation/CoreLocation.h>


@interface LocationModel ()<CLLocationManagerDelegate>
@property (nonatomic, strong) CLLocationManager* locationManager;

@end

@implementation LocationModel
static LocationModel* sharedInstance;
@synthesize locationManager;

#pragma mark - private

- (void)startStandardUpdates
{
    // Create the location manager if this object does not
    // already have one.
    if (nil == locationManager)
    {
        locationManager = [[CLLocationManager alloc] init];
    }

    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;

    // Set a movement threshold for new events.
    locationManager.distanceFilter = 1; // meters

    [locationManager startUpdatingLocation];

    // Start heading updates.
    if ([CLLocationManager headingAvailable]) {
        locationManager.headingFilter = 5;
        [locationManager startUpdatingHeading];
    }
}


#pragma mark - CLLocationManagerDelegate

- (void)locationManager:(CLLocationManager *)manager
     didUpdateLocations:(NSArray *)locations {
    // If it's a relatively recent event, turn off updates to save power.
    CLLocation* location = [locations lastObject];
    NSDate* eventDate = location.timestamp;
    NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];
    if (abs(howRecent) < 15.0) {
        // If the event is recent, do something with it.
        NSLog(@"latitude %+.6f, longitude %+.6f\n",
              location.coordinate.latitude,
              location.coordinate.longitude);
    }
}

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {
    if (newHeading.headingAccuracy < 0)
        return;

    // Use the true heading if it is valid.
    CLLocationDirection  theHeading = ((newHeading.trueHeading > 0) ?
                                       newHeading.trueHeading : newHeading.magneticHeading);
    NSLog(@"Heading changed: %f", theHeading);
    //self.currentHeading = theHeading;
    //[self updateHeadingDisplays];
}

#pragma mark - Init

-(id)init
{
    self = [super init];
    if (self) {
        [self startStandardUpdates];
    }
    return self;
}

#pragma mark - public

+(LocationModel*)getSharedInstance
{
    if(!sharedInstance)
    {
        sharedInstance = [[LocationModel alloc] init];
    }
    return sharedInstance;
}

+(void)myInit
{
    sharedInstance = [[LocationModel alloc] init];
}

@end

我只是从interfaceController的awakeWithContext调用myInit

ony

核心位置需要在ios App中实现,而不是在扩展中实现(如文档中所述)。另一件事,在IOS8中,应先调用requestWhenInUseAuthorization,然后再调用startUpdatingLocation。

//检查iOS8。如果没有此防护措施,则代码将在iOS 7上使用“未知选择器”崩溃。}

关于GPX文件-模拟器似乎不喜欢它。它只是不播放。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

插入符号上的parRF不适用于多个核心

来自分类Dev

渐变不适用于位置:绝对

来自分类Dev

咕watch的手表中断不适用于jekyll

来自分类Dev

Apple Watch中的布局

来自分类Dev

Apple Watch Video Control

来自分类Dev

在Apple Watch上检索位置

来自分类Dev

适用于Apple Watch的模拟器构建

来自分类Dev

Apple Watch的推送通知

来自分类Dev

适用于Apple Watch / WatchKit的语音合成器

来自分类Dev

从Apple Watch发起呼叫

来自分类Dev

Apple Watch NFC API

来自分类Dev

Angular $ watch不适用于通过指令更新的控制器变量

来自分类Dev

控制Apple Watch的音量

来自分类Dev

Gulp文件包含不适用于gulp.watch

来自分类Dev

Google Places地址的核心位置地理编码不适用于意大利城市

来自分类Dev

Apple Watch观看通讯

来自分类Dev

Apple Watch动画中当前图像的位置

来自分类Dev

使用Apple Watch的iAd

来自分类Dev

适用于iOS的Apple Watch(WatchKit)布局样式库

来自分类Dev

CLLocationManagerDelegate方法不适用于Apple Watch扩展

来自分类Dev

Angular $ watch不适用于数组和数据收集

来自分类Dev

Apple Watch站立检测

来自分类Dev

Gulp.js-`watch`不适用于`typescript`更改,但适用于`html,css`更改

来自分类Dev

Apple Watch NFC API

来自分类Dev

Angular $ watch不适用于通过指令更新的控制器变量

来自分类Dev

Gulp livereload不适用于使用watch进行gulp-connect

来自分类Dev

AngularJS $watch 不适用于绑定对象

来自分类Dev

fabric:profile-refresh 和 fabric:watch 不适用于 Fuse 6.3

来自分类Dev

位置:粘性;不适用于图像