Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 使用地图应用程序将用户导航到位置_Xcode_Mkmapview_Cllocationmanager_Userlocation - Fatal编程技术网

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

Xcode 使用地图应用程序将用户导航到位置,xcode,mkmapview,cllocationmanager,userlocation,Xcode,Mkmapview,Cllocationmanager,Userlocation,我有一个地图视图,上面有很多注释。当用户点击一个注释时,它会把他们带到一个详细信息页面,页面上有关于艺术品的信息,还有一个按钮“获取到该位置的方向”。这就是我想要决定的。我刚才使用的mapview具有当前用户位置,这是我在URL中作为起点发送到“地图”应用程序所需的位置。最好将最新的用户位置坐标从mapview传递到下一页,以便在用户需要方向时使用,还是在下一页启动新的CLLocationManager以获取用户位置。此外,我尝试了后者,但无法从管理员处获取用户的位置。我所做的只是在界面中声明管

我有一个地图视图,上面有很多注释。当用户点击一个注释时,它会把他们带到一个详细信息页面,页面上有关于艺术品的信息,还有一个按钮“获取到该位置的方向”。这就是我想要决定的。我刚才使用的mapview具有当前用户位置,这是我在URL中作为起点发送到“地图”应用程序所需的位置。最好将最新的用户位置坐标从mapview传递到下一页,以便在用户需要方向时使用,还是在下一页启动新的CLLocationManager以获取用户位置。此外,我尝试了后者,但无法从管理员处获取用户的位置。我所做的只是在界面中声明管理器:

CLLocationManager *manager;
“财产”信息技术:

“综合”it:

在viewDidLoad中执行此操作:

 [manager startUpdatingLocation];
然后在“导航”iAction方法中执行此操作:

-(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:DidUpdateLocation:fromLocation:
中读取当前位置(如果找到)

但是,在您的情况下,我不会费心再次实时获取当前位置。用户点击注释和出现细节页面之间的时间不会太长,从而产生显著差异。相反,在显示细节页面之前,我会将startingLocation属性添加到细节页面,并将其设置为map view userLocation


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

感谢您的反馈,我想这可能是一个更好的方法,尤其是因为用户可以在新经理有足够的时间阅读之前点击导航按钮。还有一个新手问题:如何设置一个类中的属性值?是否需要将其作为参数发送到方法?根据显示详细信息页面的方式,可以将其作为参数添加到详细信息页面视图控制器的自定义init方法中,也可以仅添加属性并在显示之前进行设置。类似于:在细节页面界面中放置
@property(assign)CLLocationCoordinate2D startingLocation然后在显示详细页面之前,放置
detailPageVC.startingLocation=mapView.userLocation.location.coordinate
 [manager startUpdatingLocation];
-(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 ]]];

}