我有一个mapview上面有很多注释。当用户点击一个注释时,它会把他们带到一个详细页面,上面有关于艺术品的信息,还有一个"获取到这个位置的方向"的按钮。这就是我想要决定的。我刚刚使用的mapview有当前用户位置,这是我需要在URL中作为起始点发送给地图应用的东西。最好是将最近的userLocation坐标从mapview传递到下一页以便我可以在用户想要方向时使用它,还是我应该在下一页上启动一个新的CLLocationManager来获取用户位置。此外,我尝试了后者,但无法从管理器获得用户的位置。我所做的只是在接口中声明了管理器:
CLLocationManager *manager;
"属性":
@property (nonatomic, retain) CLLocationManager *manager;
"合成":
@synthesize manager;
在viewDidLoad:
中执行此操作 [manager startUpdatingLocation];
,然后在"navigate" 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 ]]];
}
"end"的结果是0,0,所以我一定遗漏了什么。
我的问题是:
1。我做错了CLLocationManager.
2。假设我甚至让它工作,你会建议这样做,以获得当前位置,或者我应该发送一个稍微过时的(可能)用户位置从以前的mapview使用的方向?是否值得电池和时间来启动一个CLLocationManager只是为了获得一个坐标的方向?
感谢您的任何反馈!
要使用CLLocationManager
,您需要alloc+init它,设置它的委托,然后调用startUpdatingLocation
,并在委托方法locationManager:didUpdateToLocation:fromLocation:
中读取当前位置(如果找到)。
然而,在你的情况下,我不会费心去实时获取当前位置。用户点击注释和出现的详细信息页面之间的时间不会很长,因此不会产生明显的差异。相反,我将在详细页面中添加startingLocation属性,并在显示详细页面之前将其设置为地图视图userLocation。
这样,用户就不必(可能)等到找到一个新的、更准确的当前位置,并且在用户点击注释之前,它实际上显示了用户所看到的当前位置的方向。