1

Können wir die "Nachbenachrichtigung" für Standortaktualisierungen verwenden, um den aktuellen Standort auf Google Maps zu plotten? Oder eine andere Möglichkeit, etwas anderes zu implementieren? Obwohl ich KVO für @ "Mylocations" in googlemaps nicht verwenden möchte.Ist es zulässig, nach der Benachrichtigung zu verwenden, um Standortaktualisierungen zu verfolgen?

In LocationTracker.m

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{ 
for(int i=0;i<locations.count;i++) 
{ 
    CLLocation * newLocation = [locations objectAtIndex:i]; 
    CLLocationCoordinate2D theLocation = newLocation.coordinate; 
    CLLocationAccuracy theAccuracy = newLocation.horizontalAccuracy; 

    [PlacesDetails sharedInstance].theLocation=theLocation; 
    if(newLocation != nil && (!(theLocation.latitude == 0.0 && theLocation.longitude == 0.0))) 
    { 
     self.myLastLocation = theLocation; 
     self.myLastLocationAccuracy= theAccuracy; 
// Below implemented the post notification 
     [[NSNotificationCenter defaultCenter] postNotificationName:@"updateLocation" object:nil]; 
    } 
} 
} 

In ViewController.m

- (void)viewDidLoad { 
[super viewDidLoad]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateGMSCameraPostition) name:@"updateLocation"  
object:nil]; 
} 

-(void)updateGMSCameraPostition 
{ 
    NSLog(@"CALLED UPDATELOCATION OBSERVER"); 
mapView_.camera = [GMSCameraPosition cameraWithTarget:[PlacesDetails sharedInstance].theLocation 
               zoom:14];} 
+0

Es ist eine legitime Art der Datenübermittlung. Genannt das Beobachtermuster, wenn Sie es nachschlagen möchten. – AMAN77

+0

@ AMAN77 Ich habe das KVO-Muster verwendet, aber abstürzt und Konsole sagt "GMSMapView wurde freigegeben, während Schlüssel Wert Beobachter noch damit registriert waren" Ich habe das gleiche wie in Link 'http://stackoverflow.com/questions/27193946/ crash-while-my-location-on-googlemaps-on-iphone 'und probierte jede Lösung von dort aus. Also entschied ich mich, KVO nicht zu benutzen. – Ketan

Antwort

1

Keban, , die vor allem davon abhängt, wie Sie Ihre Anwendung entworfen haben. Sie können dafür verschiedene Muster verwenden. Das NSNotificationCenter ist auch gut, aber Sie müssen den Beobachter zum richtigen Zeitpunkt entfernen. Wenn Sie dies nicht tun, können mehrere Benachrichtigungen ausgelöst werden und ein erbärmliches Verhalten Ihrer App verursachen.

  1. KVO, Willchangevalueforkey, können Sie auch verwenden, aber immer noch müssen Sie das sehr vorsichtig verwenden. Dieser ist auch gut, um die Änderungen zu messen.
  2. Delegiertenmuster, Sie können auch das Delegatenmuster dafür verwenden.
  3. MVVM: - Wenn Sie MVVM (Modal View-View Modal) Design-Muster verwenden, dann würde ich vorschlagen, Sie mit Blöcken gehen, das ist einer meiner Lieblings-Weg.

Für Blöcke können Sie sich über diese Links informieren.

Blocks Apple Developer

Blocks RyPress

Inline Blocks

ich denke, es könnte Ihnen helfen.

+0

Danke !! Ich habe am wenigsten Griff über Blöcke, ich möchte es gehen :) wird bald aktualisieren. – Ketan

+0

Willkommen @KetanShinde Prost – Sabby