Я разрабатываю приложение для определения местоположения POI. Я разбираю файл JSON с более чем 1600 местоположениями. Как эффективно сравнить этот список с текущим местоположением пользователя и получить 10 ближайших?
EDIT Приложение не использует сервер, так как я хочу использовать локальные JSON файлы.
Будет лучше, если вы сможете хранить 1600 мест в базе данных (например, mongodb), которая поддерживает геопространственные запросы. Вы можете напрямую запросить базу данных, чтобы определить ближайшее N-ное количество мест к заданным широте и долготе пользователя.
Если вы хотите найти расстояние с высоты птичьего полета, вы можете просто запросить ваши местоположения и проверить расстояние с помощью формулы, расположенной здесь. Но если вы собираетесь учитывать дороги (графики), боюсь, вам придется использовать какой-то сервис поиска пути, например google maps или создать свой собственный. (Насколько я знаю, в Android нет встроенного механизма).
Мы тоже писали подобное приложение и провели несколько тестов производительности на MySQL и MongoDB. Поскольку MongoDB основана на документах и хранит свои данные в формате json, запросы на основе местоположения (например, ближайшие к пользователю рестораны) выполняются и возвращаются невероятно быстро. Насколько я помню, это было примерно в 10 раз быстрее, чем MySQL. Поэтому, даже если в вашем приложении не используется база данных no-sql, я настоятельно рекомендую вам использовать MongoDB даже просто для расчета местоположения в вашем проекте.