我有一个带有许多注释的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是否值得花费电池和时间?
感谢您的反馈!
答案 0 :(得分:0)
要使用CLLocationManager
,您需要alloc + init,设置其委托,然后调用startUpdatingLocation
,并在委托方法{{1}中读取当前位置(如果找到) }。
但是,在您的情况下,我不会想要再次实时获取当前位置。用户点击注释和详细信息页面之间的时间不会很长,从而产生显着差异。相反,我会在详细信息页面中添加一个startingLocation属性并将其设置为地图视图userLocation。
这样,用户不必(可能)等到找到新的,更准确的当前位置,并且它实际上显示了用户在点击注释之前看到的当前位置的方向。