2015-07-29 4 views
1

Я работаю над приложением Android для отслеживания текущего местоположения пользователя (с помощью GPS) и маршрутизации на картах Google при изменении местоположения.Слишком много точек, снятых onLocationChanged в android google maps

Для сохранения маршрута я собираю широты и долготу каждого местоположения и сохраняю его в списке, нажав кнопку «Сохранить», список преобразуется в 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

Если вы используете API местоположения сервисов Google Play, то при создании объекта 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(); 
Смежные вопросы