英语轻松读发新版了,欢迎下载、更新

地图软件 实时显示车速是怎样实现的?

vincent89 发布于 2016年03月02日
无人欣赏。

还有就是关于陀螺仪的资料希望各位可以推荐一下..

需求: 想在app里显示当前车速,以及G值.

共4条回复
tinyfool 回复于 2016年03月02日

当前速度的话,有gps距离和时间就可以算了吧,很简单吧

vincent89 回复于 2016年03月02日
  • (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{

    //simply get the speed provided by the phone from newLocation

    double gpsSpeed = newLocation.speed;

    // alternative manual method

    if(oldLocation != nil) { CLLocationDistance distanceChange = [newLocation getDistanceFrom:oldLocation]; NSTimeInterval sinceLastUpdate = [newLocation.timestamp timeIntervalSinceDate:oldLocation.timestamp]; double calculatedSpeed = distanceChange / sinceLastUpdate;

    }
    }

另外IOS8开始 didUpdateToLocation 方法 变为:

  • (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations

现在的问题是现在的方法把之前 newLocation和oldLocation 放进了一个数组. 里边是NSindexSet 我怎样取啊?

volans 回复于 2016年03月06日

这个是GPS标准输出数据http://aprs.gids.nl/nmea/#vbw。可以看到里面信息包括速度信息(其实这是位置计算的时候计算出来的,并不是GPS卫星报给手机的)。手机系统的SDK一般支持返回部其中的一部分数据,至少GPGGA, GPGSV之类的肯定有接口。GPS在正常情况下是每一秒就会上报一个位置信息(标准位置信息包括经纬度,海拔和相对UTC时间),导航应用可以自己做运算。当然如果为了让速度显示非常精确且变化平滑,还是有很多东西要处理的,还需要针对地图的路线进行不断的纠错。

volans 回复于 2016年03月06日

2楼 @vincent89 对iOS不了解,但在Android里单纯的定位在LocationManager,陀螺仪,加速度计,指南针之类的在SensorManager。但在实际应用中,SensorManager和LocationManager是混合的,比如室内定位的应用中,GPS,WIFI, 手机的基站,指南针,加速度传感器等都会参与到运算中来,以提高定位的精度,在Android里有一个FusedLocation。 估计iOS也有相关的玩意儿,可能会更高级一些。

陀螺仪的话,不知道你要了解到什么程度,简单了解可以查一下陀螺仪芯片的数据手册。这个bosch,ST,Invensense等都有相关产品,你可以google“Bosch ST Invensense Gyro"...

登录 或者 注册