我正在使用ios中的mapkit,我必须从当前位置跟踪我的路线。 现在,我已经使用模拟器(Debug-> location->自定义位置)分配了我当前的位置,即纬度和经度,但是当我尝试跟踪我的源时,我的源位置为零,因此我无法使用得到路线。
[directionsRequest setSource:[MKMapItem mapItemForCurrentLocation]];
任何人都可以为我的问题提出可能的解决方案
代码
MKDirectionsRequest * directionsRequest = [[MKDirectionsRequest alloc] init];
MKPlacemark *placemark = [[MKPlacemark alloc] initWithPlacemark:thePlacemark];
[directionsRequest setSource:[MKMapItem mapItemForCurrentLocation]];
[directionsRequest setDestination:[[MKMapItem alloc] initWithPlacemark:placemark]];
directionsRequest.transportType = MKDirectionsTransportTypeAutomobile;
MKDirections *directions = [[MKDirections alloc] initWithRequest:directionsRequest];
答案 0 :(得分:1)
如果您使用的是MapView,那么有一种委托方法可以在不使用CLLocationManager的情况下获取当前位置。
-(void)viewDidLoad
{
mapView.delegate=self;
}
-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
`enter code here` //Here MKUserLocation will give you current Location and every time will method will call when the location is change...'
}
如果您只想要用户位置,请使用
MKUserLocation *userlocation=mapView.userlocation
答案 1 :(得分:0)
我认为你的位置是零,因为你在模拟器中测试它,请在真实设备上运行
答案 2 :(得分:0)
https://developer.apple.com/library/ios/documentation/MapKit/Reference/MKMapItem_class/状态mapItemForCurrentLocation出于隐私原因不包含坐标数据,但如果您使用地图视图并且showsUserLocation为true,则这是一个简单的解决方法:
MKUserLocation* userLocation = self.mapView.userLocation;
MKMapItem* mapItemForCurrentLocation;
if(userLocation.isUpdating && userLocation.isBeingUpdated){
mapItemForCurrentLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:userLocation.location.coordinate addressDictionary:nil]];
mapItemForCurrentLocation.name = @"Current Location";
}