Intereting Posts
Каково использование частных поставщиков контента? Поддержка разделенного экрана в Android N + только на планшетах Как распечатать данные из приложения Android на WIFI-принтер? Метод managedQuery (Uri, String , String, String , String) из типа Activity устарел Как выбрать подходящую камеру для включения фонарика в Android 2.2? Невозможно использовать jwplayer в приложении для Android Ошибка crashlytics во время сборки – не удалось прочитать build_id как строку значений Настройка layout_width, layout_height с использованием стиля Как уменьшить размер приложения android для firemonkey? Ошибка Android Studio: метод Gradle DSL не найден: 'has ()' Как правильно импортировать HttpClient из org.apache на Android с помощью файла сборки градации? Google Espresso или Robotium Запись стереозвука с помощью Motorola Moto G (или Moto X) Как нарисовать заголовок раздела в списке Android, как и UITableview ios? Любой более быстрый способ сбросить иерархию пользовательского интерфейса?

Расчет расстояния между местоположением пользователя и местоположением ресторана через json (url)

У меня есть latitude и longitude которые исходят из URL (JSON). Я должен рассчитать расстояние от местоположения пользователей (должно быть определено первым) до определенной latitude и longitude (которая исходит от URL-адреса) и показать расстояние между ними.

Данные JSON можно увидеть на прикрепленном изображении:

Введите описание изображения здесь

URL для получения данных JSON (широта и долгота ресторана): https://comida-95724.herokuapp.com/api/v1/restaurants/get_featured_restaurants

ListActiivty.java

  public class ListViewActivity extends Activity { // Log tag private static final String TAG = ListViewActivity.class.getSimpleName(); // change here url of server api private static final String url = "https://comida-95724.herokuapp.com/api/v1/restaurants/get_featured_restaurants"; private ProgressDialog pDialog; private List<Movie> movieList = new ArrayList<Movie>(); private ListView listView; private CustomListAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_listview); listView = (ListView) findViewById(R.id.list); adapter = new CustomListAdapter(this, movieList); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Movie movie = movieList.get(position); Intent intent = new Intent(ListViewActivity.this, SecondActivity.class); intent.putExtra("name", movie.getName()); intent.putExtra("average_ratings", movie.getAverage_ratings()); intent.putExtra("full_address", movie.getAddress()); intent.putExtra("image_url", movie.getThumbnailUrl()); intent.putExtra("cuisine",movie.getCuisine()); intent.putExtra("cost",movie.getCost()); startActivity(intent); } }); listView.setAdapter(adapter); pDialog = new ProgressDialog(this); // Showing progress dialog before making http request pDialog.setMessage("Please Keep patience.Its loading..."); pDialog.show(); JsonArrayRequest movieReq = new JsonArrayRequest(url, new Response.Listener<JSONArray>() { @Override public void onResponse(JSONArray response) { Log.d(TAG, response.toString()); hidePDialog(); // Parsing json for (int i = 0; i < response.length(); i++) { try { JSONObject obj = response.getJSONObject(i); Movie movie = new Movie(); //movie.setTitle(obj.getString("title")); movie.setName(obj.getString("name")); //movie.setThumbnailUrl(obj.getString("image")); movie.setThumbnailUrl(obj.getString("org_image_url")); movie.setAverage_ratings(obj.getString("average_ratings")); movie.setCuisine(obj.getString("cuisine")); movie.setAddress(obj.getJSONObject("address").getString("area")); movie.setlatitude(obj.getJSONObject("address").getString("latitude")); movie.setlongitude(obj.getJSONObject("address").getString("longitude")); movieList.add(movie); } catch (JSONException e) { e.printStackTrace(); } } adapter.notifyDataSetChanged(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { VolleyLog.d(TAG, "Error: " + error.getMessage()); hidePDialog(); } }); // Adding request to request queue AppController.getInstance().addToRequestQueue(movieReq); } @Override public void onDestroy() { super.onDestroy(); hidePDialog(); } private void hidePDialog() { if (pDialog != null) { pDialog.dismiss(); pDialog = null; } } } 

list_row.xml

  <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/ly_root" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="12dp" android:background="#FEFEFE" app:cardCornerRadius="8dp"> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <com.android.volley.toolbox.NetworkImageView android:id="@+id/thumbnail" android:layout_width="120dp" android:layout_height="100dp" android:layout_marginRight="8dp" android:scaleType="centerCrop" /> <!-- Restaurant name --> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/thumbnail" android:textStyle="bold" /> <TextView android:id="@+id/area" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/name" android:layout_toRightOf="@+id/thumbnail" android:textColor="#D2691E"/> <!-- Rating --> <TextView android:id="@+id/average_ratings" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/area" android:layout_toRightOf="@+id/thumbnail" android:textColor="#D2691E" /> <TextView android:id="@+id/cuisine" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/average_ratings" android:layout_toRightOf="@+id/thumbnail" android:textColor="#D2691E" /> <TextView android:id="@+id/cost" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/cuisine" android:layout_toRightOf="@+id/thumbnail" android:textColor="#D2691E" /> <TextView android:id="@+id/latitude" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/cost" android:layout_toRightOf="@+id/thumbnail" android:textColor="#D2691E" /> <TextView android:id="@+id/longitude" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/latitude" android:layout_toRightOf="@+id/thumbnail" android:textColor="#D2691E" /> <TextView android:id="@+id/Distance" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/cost" android:layout_toRightOf="@+id/thumbnail" android:textColor="#D2691E" /> </RelativeLayout> </android.support.v7.widget.CardView> 

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

Пример: расстояние от пользователя Yuuka – St. Regis Mumbai = 1,9 км.

Как я могу показать это?

Может ли кто-нибудь помочь мне?

Введите описание изображения здесь

Если вы знаете свое текущее местоположение, вы можете рассчитать расстояние между двумя объектами Location в Android следующим образом:

 Location myLocation = new Location("my loc"); myLocation.setLatitude(myLat); myLocation.setLongitude(myLng); Location locFromJson = new Location("loc from json"); locFromJson.setLatitude(latFromJson); locFromJson.setLongitude(lngFromJson); float distance = myLocation.distanceTo(locFromJson); 

Здесь distance находится в метрах. Поэтому distance/1000 будет в километрах.