2016-07-05 2 views
1

Я надеюсь создать приложение для одного из моих проектов в колледже, предлагающего услуги для ресторанов, которые будут регистрировать и хранить общие сведения, меню и расположение их ресторанов, а затем я хотел бы чтобы получить эти места в ресторанах в приложении для Android, над которым я работаю, в зависимости от местоположения пользователя. Таким образом, когда клиент откроет приложение, будут указаны рестораны рядом с этим пользователем в радиусе 5 миль,Как хранить и извлекать места на Картах Google

Это будет два различные приложения для владельцев ресторанов и клиентов, подключенных к одной базе данных.

Я хочу, чтобы некоторые указатели о том, как достичь этой задачи, не стесняйтесь указывать лучшие практики, если я пойду в неправильном направлении для достижения этой задачи.

Спасибо!

ответ

1

В вашей базе данных ваше хранилище будет храниться в виде сочетания широты и долготы.

Когда клиент открывает приложение, вы должны получить текущее местоположение клиента и запросить свою базу данных, чтобы проверить, не превышает ли расстояние между текущим местоположением пользователя/клиента и местоположением ресторана менее 5 миль. Google уже предоставил метод для достижения этой функциональности.

Предположим, что вы представляете местоположение пользователя, как:

Location userLocation = new Location(""); 
userLocation.setLatitude(latitude1); 
userLocation.setLongitude(longitude1); 

Это как вы представляете расположение ресторана запрашивается из базы данных по одному.

Location restaurantLocation = new Location(""); 
restaurantLocation.setLatitude(latitude2); 
restaurantLocation.setLongitude(longitude2); 

И таким образом вы можете рассчитать расстояние в метрах.

float distanceInMeters = userLocation.distanceTo(restaurantLocation); 

Вы можете сделать соответствующие преобразования в мили следующим образом:

float distanceInMiles = distanceInMeters/1.60934 

А затем проверить, если это более 5 миль. Если условие возвращает true, отметьте это местоположение на карте с координатами ресторана.

if (distanceInMiles > 5) 
{ 
    // code to set the marker with the restaurant's coordinates on the map. 
} 

Вы можете выполнить этот тест периодически (скажем, через каждые 5 минут), чтобы найти рестораны в радиусе 5 миль недалеко от пользователя.