Текущее местоположение не показывает - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь использовать GoogleMap API и Apple CLocationManager для моего приложения, но оно не показывает мое текущее местоположение ни в одном из них. Я настроил API в AppDelegate.m, а также спрашивал и проверял разрешение пользователя на отслеживание местоположения. Это код, который я имею для карты. Я пытаюсь узнать текущее местоположение пользователя, и я получу пункт назначения пользователя и уведомлю его, когда он приблизится к своему местоположению (используя приблизительное время и расстояние). Буду признателен, если вы тоже поможете мне в этом. спасибо

#import "GMapViewController.h"
#import <GoogleMaps/GoogleMaps.h>
#import "CSMarker.h"
@import GoogleMaps;
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>


@interface GMapViewController ()  <GMSMapViewDelegate, CLLocationManagerDelegate, MKMapViewDelegate>
@property(strong, nonatomic) NSURLSession *markerSession;
@property(strong, nonatomic) GMSPolyline *polyline;
@property(strong, nonatomic) NSArray *steps;

//apple 

@property (weak, nonatomic) IBOutlet MKMapView *mapViews;

@end


@implementation GMapViewController
@synthesize viewDirection,locationManager;
@synthesize mapView;

- (void)startStandardUpdates
{
    // Create the location manager if this object does not
    // already have one.
    if (nil == locationManager)
        locationManager = [[CLLocationManager alloc] init];

    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    [locationManager startUpdatingLocation];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self startStandardUpdates];
    self.mapView.delegate=self;
    self.mapViews.delegate=self;

    if ([locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
        [locationManager requestAlwaysAuthorization];
    }
    [locationManager startUpdatingLocation];



    //map type
    self.mapView.mapType = kGMSTypeNormal;
    [self.view addSubview:self.mapView];
    // to show compass and mylocation button
    self.mapView.settings.compassButton = YES;
    self.mapView.settings.myLocationButton = YES;
    //setting max and min zoom
    //[self.mapView setMinZoom:10 maxZoom:18];



    //for Drawing a line on the map
    GMSMutablePath *singleLinePath = [[GMSMutablePath alloc] init];
    // create a GMSMutablePath and add two points as lat/lng
    [singleLinePath addLatitude:28.5382 longitude:-81.3687];
    [singleLinePath addLatitude:28.5421 longitude:-81.3690];
    // use the path to create a GMSPolyline
    GMSPolyline *singleLine = [GMSPolyline polylineWithPath:singleLinePath];
    singleLine.map = self.mapView; //turn the line on

        self.mapViews.showsUserLocation = YES;
} 


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


- (void)locationManager:(CLLocationManager *)manager
       didFailWithError:(NSError *)error {
    NSString *errorType = nil;
    if (error.code == kCLErrorDenied)
    {errorType = @"Access Decied";}
    else
    {errorType = @"Unknown Error";}
    UIAlertController* alert = [UIAlertController
                                alertControllerWithTitle: @"Alert"
                                message: @"Error getting location!"
                                preferredStyle: UIAlertControllerStyleAlert];


    UIAlertAction *okAction = [UIAlertAction
                               actionWithTitle:@"OK"
                               style:UIAlertActionStyleDefault
                               handler:^(UIAlertAction *action)
                               {
                                   NSLog(@"OK action");

                               }];

    [alert addAction:okAction];
    [self presentViewController:alert animated:YES completion:nil];

}

@end

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Можете ли вы проверить, указали ли вы следующие ключи в вашем info.plist? Все три ключа не нужны, вам нужно определить один или два из этих ключей в зависимости от ваших прав использования.

NSLocationAlwaysUsageDescription: Always location description
NSLocationWhenInUseUsageDescription: When in use location description
NSLocationAlwaysAndWhenInUseUsageDescription: description for both
0 голосов
/ 01 мая 2018

Еще раз взглянем на ваш locationManager:(CLLocationManager *)manager didUpdateLocations: метод. Вы получаете ссылку newLocation, но, похоже, вы ничего с этим не делаете. Кроме того, вы, похоже, нигде не устанавливаете значение currentLocation.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...