2016-11-02 5 views
4

Meine Anforderung ist es, eine App zu erstellen, die Live-Tracking von Taxi anzuzeigen. Wie berühmte Auto Apps wie Ola, Uber und so weiter.MKMapview Live-Auto-Tracking

Bitte lassen Sie mich wissen, wie Annotation zu aktualisieren, auch für Street Turn und Car Reverse. Wie kann man bewegte Annotationen mit MKMapview simulieren? jede Bibliothek, die ich benutzen muss. Ich suchte, aber ich konnte keine Bibliothek finden

+0

ich Sie Google Maps SDK für besser zu nutzen empfohlen lösen Lösungen über diese – Himanth

+0

@himanth wie Sie das sagen? . Wird Apple genehmigen, wenn ich Google SK für Karten verwende – Vinodh

+0

Ja, natürlich apple wird es genehmigen – Himanth

Antwort

3

Wie ich denke, das Problem ist ein reibungsloses Drehen der Annotation auf der Karte. Da Sie anstelle des standardmäßigen blauen Punkts ein eigenes benutzerdefiniertes Bild einfügen können.

für reibungsloses Drehen können Sie CMMotionManager verwenden, da es Ihnen die Beschleunigung gibt, so dass Sie das Bild drehen können, indem Sie die Referenz der Anmerkungsansicht nehmen. Sie können für Beschleunigungsdaten aktualisieren, indem Sie update devicemotion-Daten verwenden. Wie Sie die useracceleration entlang x, y und z erhalten können Sie den Winkel von tan function.This erhalten sollte Ihr Problem

Code für das Erhalten der Winkel

[motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) { 
    double angle = atan(motion.userAcceleration.x/motion.userAcceleration.y); 
}]; 
+0

Können Sie mir einen Beispielcode geben? – Vinodh

+1

[motionManager startDeviceMotionUpdatesToQueue: [NSOperationQueue mainQueue] mit Handler:^(CMDeviceMotion * motion, NSError * error) { Doppelwinkel = atan (motion.userAcceleration.x/motion.userAcceleration.y); }]; – santhosh

+0

Wenn Sie den Winkel erhalten, können Sie ihn drehen, indem Sie das nsnotification center verwenden oder die Annotation-Ansicht beibehalten – santhosh

2

Die Lösung für dieses Problem ist ziemlich trivial. Wenn Sie Probleme mit der Implementierung dieser Bibliothek haben, warum sollten Sie nicht selbst etwas lernen? Sie erstellen nur eine Art von Fahrzeugmodellklasse, die die Koordinaten und die vorherigen Koordinaten speichert. Um es auf der Karte anzeigen zu können, müsste es das MKAnnotationsprotokoll einhalten - implementieren: Titel, Untertitel und Koordinaten. Die Position newCoordinate wird standardmäßig beim Abrufen von Positionsdaten vom Netzwerk festgelegt. Sie müssen zwei Werte verfolgen, um erfolgreich zu animieren.

und damit so etwas wie dies umzusetzen:

@interface Vehicle : NSObject <MKAnnotation> 

@property (nonatomic, readonly, copy) NSString *title; 
@property (nonatomic, readonly, copy) NSString *subtitle; 

@property (nonatomic, assign) CLLocationCoordinate2D coordinate; 
@property (nonatomic, assign) CLLocationCoordinate2D newCoordinate; 

@end 

Nach dem newCoordinate Einstellung des vorherigen Wert von benutzerdefinierten Setter in das Eigentum koordinieren bewegen. Sobald Sie dies tun, würden Sie die Annotation wie gewohnt animieren.

// new coordinate obtained from networking 
- (void)setNewCoordinate:(CLLocationCoordinate2D)newCoordinate { 

    // implement the value moving part 

    _newCoordinate = newCoordinate; 
} 

Aber Vorsicht, wenn Sie auf die animierte Anmerkung tippen, wegen der Art, wie es funktioniert. Der Anmerkungsrahmen wird gesetzt, wenn die Animation auf den Wert des fertigen Rahmens beginnt. Sie müssten hitTest auf die PresentationLayer der Annotation tippen, die während der Animation auf dem Bildschirm angezeigt wird.

die Hähne

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
} 

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 
} 

belebter mit

[UIView animateWithDuration:0 
         delay:0 
        options:UIViewAnimationOptionCurveEaseIn 
       animations:^{ 

} completion:nil]; 

Ich bedaure, außer Kraft setzen, um handhaben, aber ich kann nicht Code hier posten, da ich vorher diese für meinen Arbeitgeber umgesetzt haben und vertraglich gebunden bin .

+0

Cool danke. Bitte lassen Sie mich, wie Sie eine reibungslose Bewegung der Animation der Anmerkung aktualisieren. Du hast mir gesagt, ich sollte in Berührungen übergehen und den Test starten. Lassen Sie mich wissen, was ich in diesem 2 Methoden tun muss – Vinodh