iphone Текущее местоположение не отображается - PullRequest
1 голос
/ 16 июля 2011

Мне нужна помощь на iphone MapKit! Я создал простое представление карты, используя конструктор интерфейса, и установил местоположение пользователя показа на да. Тем не менее, «голубая точка» не отображается на моем развернутом itouch! Мне нужна помощь в этом!

Кроме того, кто-нибудь может посоветовать, как я могу узнать текущее местоположение пользователя и проложить маршрут к другому местоположению? Нет ли у нас официального API, который можно было бы использовать, например, как приложение карты Apple? Чтобы нарисовать маршрут.

Большое спасибо!

Мой код.

viewDidLoad

- (void)viewDidLoad {
    locationManager = [[CLLocationManager alloc] init];
    [locationManager setDelegate:self];
    [locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
    [locationManager startUpdatingLocation];
    [super viewDidLoad];
}

locationManager: didUpdateToLocation: fromLocation:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

    [mapView setMapType:MKMapTypeStandard];
    mapView.showsUserLocation = YES;

    MKCoordinateRegion region;

    CLLocationCoordinate2D location;
    location.latitude = newLocation.coordinate.latitude;
    location.longitude = newLocation.coordinate.longitude;

    region.center = location;
    region.span.longitudeDelta = 0.02;
    region.span.latitudeDelta = 0.02;
    [mapView setRegion:region animated:YES]; 
    [mapView setDelegate:self];
}

Ответы [ 2 ]

1 голос
/ 16 июля 2011

Для пункта 2: если вы хотите показать маршрут с помощью Карт (чтобы ваше приложение работало в фоновом режиме), используйте:

NSString* url = [NSString stringWithFormat: @"http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f",fromLocation.latitude, fromLocation.longitude,toLocation.latitude,toLocation.longitude];
            [[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]];

Если вы хотите нарисовать маршрут в вашем MKMapview, я предлагаю вам посмотретьна этот https://github.com/kishikawakatsumi/MapKit-Route-Directions.

Я не знаю, для пункта 1, вы активировали службы определения местоположения в настройках?

0 голосов
/ 16 июля 2011

Что вы написали в методе ниже?Он отвечает за размещение синей точки или булавки в текущем местоположении пользователя.

Примечание: Я просто скопировал и вставил свой код, поэтому вам нужно изменить его в соответствии с вашими потребностями.Короче говоря, вам просто нужно вернуть view nil, если аннотация является текущим местоположением пользователя.Тогда он будет иметь синюю точку в центре в текущем местоположении пользователя автоматически.

- (MKAnnotationView *)mapView:(MKMapView *)MapView viewForAnnotation:(id<MKAnnotation>)annotation
{
MKPinAnnotationView *view = nil;

if(annotation !=mapview.userLocation){
    view = (MKPinAnnotationView *) 
    [mapview dequeueReusableAnnotationViewWithIdentifier:@"identifier"]; 
    if(nil == view) { 
        view = [[[MKPinAnnotationView alloc] 
                 initWithAnnotation:annotation reuseIdentifier:@"identifier"] 
                autorelease];           
    }
    [view setPinColor:MKPinAnnotationColorPurple];
    UIButton *btnViewVenue = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    btnViewVenue.frame = CGRectMake(0, 0, 30, 30);
    view.rightCalloutAccessoryView=btnViewVenue;
    view.pinColor = MKPinAnnotationColorGreen;
    view.enabled = YES;
    view.canShowCallout = YES;
    view.multipleTouchEnabled = NO;
    view.animatesDrop = YES;
    }       
return view;
}

Для вашего 2-го пункта о прохождении маршрута между двумя точками.Так что, насколько мне известно, официально невозможно показать маршрут между двумя точками в MapKit, пока вы не начнете рисовать линии вручную и если у вас есть координаты для всех маршрутов.

Надеюсь, эта помощь.

...