我正在使用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米长度下获得的)
如何获得较少的数据量,即纬度经度较少但精度较高且路线正确。
答案 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();