2015-04-03 120 views
0

我在Apple关注开发新的,并希望在Apple关注整合的苹果地图中,只是想表明我的当前位置,但我每次加载模拟器的界面我得到了屏幕像下面的时间。任何帮助可以欣赏。如何在苹果手表中集成苹果地图?

enter image description here

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations 
    { 
     CLLocation* loc = [locations lastObject]; 
     CLLocationCoordinate2D myLocationCoordinate2D = loc.coordinate; 
     [self.demoMap setRegion:MKCoordinateRegionMake(myLocationCoordinate2D, MKCoordinateSpanMake(0.0,0.0))];//set map region 
     [self.demoMap addAnnotation:myLocationCoordinate2D withPinColor:WKInterfaceMapPinColorGreen];// set pin on map 
     [locationManager stopUpdatingLocation]; 
    } 

#pragma mark - CLLocation Manager 

-(void)startTrackingCurrentLcoation:(BOOL)forTrip 
{ 
    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    [locationManager requestAlwaysAuthorization]; 

    CLAuthorizationStatus status = [CLLocationManager authorizationStatus]; 
    if (status == kCLAuthorizationStatusAuthorizedAlways || status == kCLAuthorizationStatusAuthorizedWhenInUse) 
    { 
     NSLog(@"%@ Start tracking current location", self); 
     [locationManager startUpdatingLocation]; 


    } 
} 
-(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status 
{ 
    status = [CLLocationManager authorizationStatus]; 
    if (status == kCLAuthorizationStatusDenied) 
    { 
     NSString *message = @"To use background location you must turn on 'Always' in the Location Services Settings"; 
     NSLog(@"%@",message); 
    } 
    else if (status == kCLAuthorizationStatusNotDetermined) 
    { 
     [locationManager requestAlwaysAuthorization]; 
    } 
    else 
    { 
     [locationManager startUpdatingLocation]; 
    } 

} 
+0

嗨,@Chirag可以请你添加代码,这样我可以帮你... – 2015-04-03 13:10:38

+0

嗨,@JayMehta我编辑我的问题 – 2015-04-03 14:21:14

+0

:1)增加更多的代码(哪里外景经理上手等)或2)添加一些日志输出,显示其值传递到这个功能以及它是如何经常被称为。 – stk 2015-04-03 21:07:46

回答

4

请点击此链接https://trymakedo.wordpress.com/tag/wkinterfacemap/

检查的天气让你的当前位置坐标传递给region.Test通过提供预定义的坐标..

+0

非常有帮助完整链接@Elalgo面包车 – 2015-04-04 14:27:13

+0

在那个链接只有一个错误在那里,是没有** ** setMapRect方法,但实际的方法是** ** setVisibleMapRect – 2015-04-04 14:37:22

+0

Ya..sry我忘了提及! – Elangovan 2015-04-06 04:58:31

1

我刚刚试了一下自己,有这许多陷阱。

我入侵了一个演示项目,你可以在这里找到: https://github.com/sticksen/WatchKit-Map-Sample-Project

清单:

  • 一定要申请授权位置服务,并开始用户之后更新位置已授予访问权限。
  • 如果授权已经批准,可以开始更新位置马上

现在最糟糕的部分:

  • 你的主要target's(其中isn't的WatchKit目标,只是为了说清楚!)Info.plist中必须有一个名为NSLocationWhenInUseUsageDescriptionNSLocationAlwaysUsageDescription(取决于你要求什么样的认证),它作为值为什么要使用位置服务有一个描述字符串的关键。如果没有在Info.plist中设置此项它不需额外工作
+0

感谢您的回答,但在演示中我面临同样的问题。我的主要部分是在地图上显示位置,它会继续显示在演示屏幕上方。即使我通过静态位置。 – 2015-04-04 05:26:31

+0

对不起,但我不完全理解你的全部句子。 '它在屏幕上方继续显示'是什么意思?你能截取它的截图吗?另外,我假设你有Xcode版本6.2(6C131e)。 – stk 2015-04-04 08:35:57

+0

此外,你必须接受的对位置服务的手机模拟器(不是手表模拟器)的授权请求,于是有了上看看。你有没有这样做,对话框弹出?尝试重置模拟器'重置内容和设置'并重新执行。 – stk 2015-04-04 08:41:54