je suis ayant une application de carte.quand une personne se déplace de l'emplacement actuel à un endroit particulier je veux calculer la distance couverte par la personne, la vitesse actuelle de la personne, la vitesse moyenne de la personne .peut-on m'aider à résoudre ce problème.please me fournir tout sloution pour résoudre ce problème.Mercicomment calculer la vitesse actuelle et la vitesse moyenne de l'utilisateur voyageant de l'emplacement actuel à loaction particulière dans la carte dans l'iphone
Répondre
Améliorez votre taux d'acceptation. Utilisez les méthodes suivantes pour obtenir la distance en miles ou en kilomètres. Vous devez déclarer le minuteur dans votre fichier d'en-tête pour le synthétiser.
//SpeedViewController.h
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
#import <MobileCoreServices/UTCoreTypes.h>
@interface SpeedViewController : UIViewController <CLLocationManagerDelegate,UINavigationControllerDelegate>
{
CLLocationManager *locManager;
CLLocationSpeed speed;
NSTimer *timer;
CLLocationSpeed currentSpeed;
float fltDistanceTravelled;
}
@property (nonatomic,retain) NSTimer *timer;
-(float)getDistanceInKm:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation;
-(float)getDistanceInMiles:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation;
@end
//SpeedViewController.h
#import "SpeedViewController.h"
#define kRequiredAccuracy 500.0 //meters
#define kMaxAge 10.0 //seconds
#define M_PI 3.14159265358979323846264338327950288 /* pi */
@implementation SpeedViewController
@synthesize timer;
- (void)startReadingLocation {
[locManager startUpdatingLocation];
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
CLLocationManager *locationManager=[[CLLocationManager alloc] init];
locationManager.delegate=self;
locationManager.desiredAccuracy=kCLLocationAccuracyBestForNavigation;
[locationManager startUpdatingLocation];
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc. that aren't in use.
}
- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
NSLog(@"new->%d old->%d",(newLocation==NULL),(oldLocation==NULL));
if(newLocation && oldLocation)
{
fltDistanceTravelled +=[self getDistanceInKm:newLocation fromLocation:oldLocation];
}
}
//this is a wrapper method to fit the required selector signature
- (void)timeIntervalEnded:(NSTimer*)timer {
fltDistanceTravelled=0;
[self startReadingLocation];
}
-(float)getDistanceInKm:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
float lat1,lon1,lat2,lon2;
lat1 = newLocation.coordinate.latitude * M_PI/180;
lon1 = newLocation.coordinate.longitude * M_PI/180;
lat2 = oldLocation.coordinate.latitude * M_PI/180;
lon2 = oldLocation.coordinate.longitude * M_PI/180;
float R = 6371; // km
float dLat = lat2-lat1;
float dLon = lon2-lon1;
float a = sin(dLat/2) * sin(dLat/2) + cos(lat1) * cos(lat2) * sin(dLon/2) * sin(dLon/2);
float c = 2 * atan2(sqrt(a), sqrt(1-a));
float d = R * c;
NSLog(@"Kms-->%f",d);
return d;
}
-(float)getDistanceInMiles:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
float lat1,lon1,lat2,lon2;
lat1 = newLocation.coordinate.latitude * M_PI/180;
lon1 = newLocation.coordinate.longitude * M_PI/180;
lat2 = oldLocation.coordinate.latitude * M_PI/180;
lon2 = oldLocation.coordinate.longitude * M_PI/180;
float R = 3963; // km
float dLat = lat2-lat1;
float dLon = lon2-lon1;
float a = sin(dLat/2) * sin(dLat/2) + cos(lat1) * cos(lat2) * sin(dLon/2) * sin(dLon/2);
float c = 2 * atan2(sqrt(a), sqrt(1-a));
float d = R * c;
NSLog(@"Miles-->%f",d);
return d;
}
@end
Si vous avez d'autres questions, n'hésitez pas à laisser un commentaire. Je n'ai pas testé cela sur l'appareil mais, logiquement, cela devrait fonctionner.
Espérons que ça aide.
Afin de déterminer toute vitesse, vous aurez envie de comprendre:
Distance: Prenez vos deux dernières coordonnées géographiques des lectures (et le temps chacun a été enregistré) pour calculer la distance entre les
Pour ce faire, vous pouvez lire sur la théorie here, ou vous pouvez consulter le code here.
Vitesse: En utilisant la distance entre la dernière lecture des coordonnées GPS et la précédente, calculer la vitesse par la formule vitesse = distance/durée. Ainsi, la distance que vous avez trouvée entre les deux coordonnées géographiques est divisée par la durée en secondes ou minutes ou peu importe. Ensuite, votre réponse sera la vitesse est x miles ou kilomètres par quoi que ce soit.
- 1. Comment calculer la vitesse moyenne mobile à partir du GPS?
- 2. calculer la vitesse
- 3. Android (obtenir la vitesse actuelle)
- 4. Limite de vitesse actuelle de la route
- 5. Comment trouver la vitesse de base de la carte graphique, la vitesse de la mémoire et la vitesse du shader (le cas échéant) en C#?
- 6. Android Scroller: calcul de la vitesse actuelle
- 7. Comment calculer la vitesse avec Core Location?
- 8. Comment calculer la vitesse avec Core Location?
- 9. Calcul de la vitesse Internet dans node.js
- 10. vitesse moyenne, as3
- 11. Basemap et Matplotlib - Amélioration de la vitesse
- 12. calculer la vitesse précise par GPS
- 13. outils à utiliser pour mesurer la vitesse et la vitesse de la base de données
- 14. Calculer la vitesse en utilisant javascript
- 15. Comment puis-je déterminer la vitesse actuelle de l'appareil?
- 16. La vitesse de sqlite3
- 17. Calculer la vitesse en utilisant le GPS dans Android
- 18. calculer la vitesse du site Web dans Android
- 19. Google Analytics: la vitesse moyenne du site toujours à 0,00
- 20. Comment ajouter des valeurs à la carte dynamique (?) En vitesse?
- 21. Précision de la vitesse openSSL
- 22. Comment calculer "WPM" dans les applications de vitesse de frappe?
- 23. Comment puis-je afficher la vitesse gif animée actuelle?
- 24. Modification de la vitesse audio dans Java
- 25. Trouver la vitesse et l'accélération dans iOS
- 26. Vecteurs, calculer les forces de mouvement avec la vitesse maximale
- 27. mysqldump et la vitesse --tab
- 28. Comment réduire la vitesse de la boucle
- 29. changer la vitesse de mise à jour sans changer la vitesse de la boucle?
- 30. Augmenter la vitesse de requête dans PostgreSQL
Je connais la méthode startUpdatingLocation .is startReadingLocation et startUpdatingLocation même – Rani
J'ai recherché la méthode startReadingLocation dans la documentation du développeur mais elle ne contient que stopupdatinglocation et startupdatinglocation. la méthode readlocation est une méthode standard ou définie par l'utilisateur – Rani
@Rani I Apologize, juste oublié de mettre cette méthode dans ce code. Mise à jour le code. –