Я использую MyLocationOverlay для отображения текущего местоположения. Однако для обновления местоположения требуется некоторое время. Я хотел реализовать что-то вроде функции «следовать за мной» на iPhone, где местоположение пользователя также перемещается по мере перемещения пользователя. Как я могу сделать маркер MyLocationOverlay для выполнения обновления в реальном времени по его местоположению?Как реализовать текущее обновление текущего местоположения пользователя?
Обратите внимание, что я переопределяю draw() и drawMyLocation(), потому что мне нужно нарисовать пользовательский маркер.
Мой текущий код выглядит следующим образом: (Проблема с моим кодом заключается в том, что маркер не перемещается вместе с пользователем. Поскольку требуется некоторое время, прежде чем вызывается onLocationChanged, маркер просто внезапно перескочит с одного места на другое .)
@Override
public synchronized void onLocationChanged(Location location)
{
if (location != null && mapController != null)
{
//Recenter map based on current location
mapController.animateTo(new GeoPoint((int) (location.getLatitude() * 1e6), (int) (location.getLongitude() * 1e6)));
}
super.onLocationChanged(location);
}
Спасибо! Сегодня я тестировал свое приложение, и он работает лучше, чем вчера. Хотя бывают моменты, когда маркер все равно прыгает с одного места на другое. Я ничего не меняю в своем коде, поэтому кажется, что вчера я просто плохой. Я напрямую не использую LocationManager, поскольку я просто повторно использую класс MyLocationOverlay, расширяя его. Должен ли я создать LocationManager? Кстати, знаете ли вы, как часто обновляется MyLocationOverlay? – Arci
Предоставление фальшивых обновлений местоположения также пришло мне в голову, но я решил не реализовывать его, потому что из-за него может возникнуть множество проблем, например, если пользователь внезапно изменит свое направление или что, если он столкнется на запад, когда он собирается восток и т. д. Я проверил метод getTime. Я этого раньше не замечал. Спасибо за совет! – Arci
Вам не нужно создавать LocationManager :) здесь: http://developer.android.com/guide/topics/location/obtaining-user-location.html - пример того, как его получить, но вы не вам нужно это, пока вы используете MyLocationOverlay - есть методы enable/disable- myLocation(), которые уже делают это внутри. Вы не можете устанавливать частоту обновлений MyLocationOverlay (см. Ответ здесь http://stackoverflow.com/questions/8394867/how-do-you-implement-follow-me-using-the-mylocationoverlay-class), поэтому, если вы хотите полный контроль над частотой, которую вы должны будете написать на свой собственный оверлей и прослушиватель. –