2013-05-02 3 views
4

Я хочу установить камеру на текущее местоположение и уровень масштабирования до 10. Итак, я написал такой код и для текущего местоположения, я получаю подсказку с этого поста.Как получить текущее местоположение в google map sdk в iphone

How to use delegates in Google map API for IOS 6

вот мой код

mapView_=[[GMSMapView alloc]initWithFrame:CGRectZero]; 

CLLocationCoordinate2D currentPosition = mapView_.myLocation.coordinate; 

GMSCameraPosition* camera = 
[GMSCameraPosition cameraWithTarget: currentPosition zoom: 10]; 
mapView_.camera = camera; 
mapView_.delegate=self; 

    mapView_.mapType = kGMSTypeSatellite; 
    mapView_.myLocationEnabled = YES; 

    self.view = mapView_; 
    mapView_.settings.myLocationButton = YES; 

Но координата 0,00 в устройстве.

Пожалуйста, любой Может помочь решить эту проблему?

+0

возможно дубликат [о позиционировании себя, некоторые проблемы] (http://stackoverflow.com/questions/15266118/about-positioning-myself-some-problems) –

ответ

9

Попробуйте это:

@property (nonatomic, retain) IBOutlet GMSMapView *googleMapView; 
@property (nonatomic, retain) CLLocationManager *locationManager; 

- (void)showCurrentLocation { 
    _googleMapView.myLocationEnabled = YES; 
    [self.locationManager startUpdatingLocation]; 
} 

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { 
      GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:newLocation.coordinate.latitude 
                    longitude:newLocation.coordinate.longitude 
                     zoom:17.0]; 
      [_googleMapView animateToCameraPosition:camera]; 
     //... 
} 
+0

ли эти методы делегата, где использовать этот – chandru

+0

'showCurrentLocation' - это мой собственный метод, который вызывается, когда кнопка отображения отображается в моем виде карты. 'locationManager: didUpdateToLocation: fromLocation' является методом протокола CLLocationManagerDelegate: https://developer.apple.com/library/Mac/DOCUMENTATION/CoreLocation/Reference/CLLocationManagerDelegate_Protocol/CLLocationManagerDelegate/CLLocationManagerDelegate.html – Stunner

+0

Как установить animateToCameraPosition является действием по умолчанию, когда нажмите кнопку определения местоположения? –

3

Вы можете добавить наблюдателя для свойства MyLocation следующим образом:

[self.mapView addObserver:self 
     forKeyPath:@"myLocation" 
     options:(NSKeyValueObservingOptionNew | 
        NSKeyValueObservingOptionOld) 
     context:NULL]; 

Затем вы должны реализовать следующий метод:

- (void)observeValueForKeyPath:(NSString *)keyPath 
        ofObject:(id)object 
        change:(NSDictionary *)change 
        context:(void *)context { 

    if ([keyPath isEqualToString:@"myLocation"]) { 

     NSLog(@"My position changed"); 
    } 
} 
+0

НЕ забудьте установить один из этих ключей в вашем Info.plist: 'NSLocationWhenInUseUsageDescription или NSLocationAlwaysUsageDescription' – hash3r

0

писать эту line in info plist

CLLocationManager requestAlwaysAuthorization (string) abcd 

// код, а также установить аннотацию контактный

.h

#import<MapKit/Mapkit.h> 

CLLocationManager *locationManager; 
@property(nonatomic, weak) IBOutlet MKMapView* mapView; 
@property(nonatomic,retain)CLLocationManager* locationManager; 


- (id)init { 
self = [super init]; 
if(self != nil) { 
    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
} 
return self; 

}

в viewDidLoad

_mapView.showsUserLocation = YES; 
_mapView.mapType = MKMapTypeStandard; 
_mapView.delegate = self; 


    if(IS_OS_8_OR_LATER) { 
    [self.locationManager requestAlwaysAuthorization]; 
} 

[self.locationManager startUpdatingLocation]; 

// NSDictionary * dictlatitude = [_dict objectForKey: @ "широта"]; float strlatitude = [[_dict objectForKey: @ "широта"] floatValue];

// NSDictionary * dictlongitude = [_dict objectForKey: @ "longitude"]; float strlongitude = [[dict objectForKey: @ "longitude"] floatValue];

NSLog(@"Staring Point latitude : %f", strlatitude); 
NSLog(@"Staring Point longitude: %f", strlongitude); 


MKCoordinateRegion region; 
MKCoordinateSpan span; 
span.latitudeDelta = 0.005; 
span.longitudeDelta = 0.005; 
CLLocationCoordinate2D location; 
location.latitude = strlatitude; 
location.longitude = strlongitude; 
region.span = span; 
region.center = location; 
[_mapView setRegion:region animated:YES]; 

MyAnnotation *ann = [[MyAnnotation alloc] init]; 
[email protected]"name of the pin"; 
ann.coordinate = region.center; 
[_mapView addAnnotation:ann]; 
Смежные вопросы