android google地图中onLocationChanged捕获的点太多

时间:2015-07-29 04:39:26

标签: android google-maps gps

我正在使用Android应用程序来跟踪用户的当前位置(使用GPS),并在位置发生变化时在谷歌地图上制作路线。

为了保存路线,我正在获取每个位置的纬度和经度并将其存储在列表中,点击“保存”按钮后,列表将转换为JSON并发送到服务器进行保存。它的工作方式很好。

public void onLocationChanged(Location location) {
    showLocation.setText("" + location.getLatitude() + " , " + location.getLongitude());
    drawLine(location, latLng);
    latLongsForRoute.add(latLng);
    for (LatLng latLong : latLongsForRoute) {
        Log.i("Latitude is: ", "" + latLong.latitude);
        Log.i("Longitude is: ", "" + latLong.longitude);
    }
}

但是,问题是即使用户移动1公里然后它给了我数千个纬度和经度,这是太多的数据要保存。并以10-15公里长的路线休息。

[
   {
      "latitude": 30.7084098,
      "longitude": 76.7030218,
      "zzCY": 1
   },
   {
      "latitude": 30.7084009,
      "longitude": 76.7030315,
      "zzCY": 1
   },
   {
      "latitude": 30.7083951,
      "longitude": 76.7030796,
      "zzCY": 1
   },
   {
      "latitude": 30.7084004,
      "longitude": 76.7029865,
      "zzCY": 1
   },
   {
      "latitude": 30.7083882,
      "longitude": 76.703018,
      "zzCY": 1
   },
   {
      "latitude": 30.708417,
      "longitude": 76.7030046,
      "zzCY": 1
   },
   {
      "latitude": 30.7083921,
      "longitude": 76.7030199,
      "zzCY": 1
   },
   {
      "latitude": 30.7084087,
      "longitude": 76.7029926,
      "zzCY": 1
   },
   {
      "latitude": 30.7083846,
      "longitude": 76.7029833,
      "zzCY": 1
   }
]

(这些许多点是在15-20米长度下获得的)

如何获得较少的数据量,即纬度经度较少但精度较高且路线正确。

1 个答案:

答案 0 :(得分:1)

如果您使用的是Google Play服务位置API,那么在创建LocationRequest对象时,您可以调整以下参数。

    //the rate at which app prefers to receive location updates
    LocationRequest.setInterval(10000);
    // the fastest rate with which the app can handle location updates
    LocationRequest.setFastestInterval(5000);
    //the smallest displacement in meters the user must move between location updates.
    LocationRequest.setSmallestDisplacement();