使用地图应用将用户导航到位置

时间:2011-07-07 16:18:33

标签: xcode mkmapview cllocationmanager userlocation

我有一个带有许多注释的mapview。当用户点击注释时,它会将它们带到详细信息页面,其中包含有关艺术品的信息以及“获取到此位置的路线”的按钮。所以这就是我想要决定的。我刚刚访问的mapview有当前的用户位置,这是我在URL中发送到地图应用程序的起点所需要的。最好将最新的userLocation坐标从mapview传递到下一页,以便我可以在用户想要指示时使用它,或者我应该在下一页上启动新的CLLocationManager以获取用户位置。此外,我尝试了后者,无法从经理那里获得用户的位置。我所做的就是在界面中声明经理:

CLLocationManager *manager;

“属性”它:

@property (nonatomic, retain) CLLocationManager *manager;

“合成”它:

@synthesize manager;

在viewDidLoad中执行此操作:

 [manager startUpdatingLocation];

然后在“导航”IBAction方法中执行此操作:

-(IBAction)navigate; {
    CLLocationCoordinate2D start = manager.location.coordinate;
    CLLocationCoordinate2D end = {[selectedArtPiece.latitude doubleValue], [selectedArtPiece.longitude doubleValue]};
    [[UIApplication sharedApplication] openURL:[[NSURL alloc] initWithString: [NSString stringWithFormat:@"http://maps.google.com/?saddr=%1.6f,%1.6f&daddr=%1.6f,%1.6f", start.latitude, start.longitude, end.latitude, end.longitude ]]];

}

“结束”最终为0,0所以我必须遗漏一些东西。

所以我的问题是:

1。我在CLLocationManager上做错了什么。

2。假设我甚至可以使用它,你会建议这样做以获取当前位置,还是应该从之前的mapview发送稍微过时的(可能)用户位置以用于指示?为了获得方向坐标,启动CLLocationManager是否值得花费电池和时间?

感谢您的反馈!

1 个答案:

答案 0 :(得分:0)

要使用CLLocationManager,您需要alloc + init,设置其委托,然后调用startUpdatingLocation,并在委托方法{{1}中读取当前位置(如果找到) }。

但是,在您的情况下,我不会想要再次实时获取当前位置。用户点击注释和详细信息页面之间的时间不会很长,从而产生显着差异。相反,我会在详细信息页面中添加一个startingLocation属性并将其设置为地图视图userLocation。

这样,用户不必(可能)等到找到新的,更准确的当前位置,并且它实际上显示了用户在点击注释之前看到的当前位置的方向。

相关问题