के माध्यम से उपयोगकर्ता स्थान और रेस्तरां स्थान के बीच दूरी की गणना मेरे पास latitude
& longitude
जो यूआरएल (JSON) से आ रहे हैं। मुझे किसी विशेष latitude
& longitude
आधार (जो एक यूआरएल से आ रहा है) में उपयोगकर्ताओं के स्थान से दूरी की गणना करना है (उनको पहले निर्धारित करने की आवश्यकता है) और उन लोगों के बीच की दूरी दिखाएं।जेसन (यूआरएल)
JSON डेटा संलग्न छवि पर देखा जा सकता है:
(रेस्तरां के अक्षांश & देशांतर) के लिए 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 मुंबई = 1.9 किमी की दूरी पर
मैं इस दिखा सकते हैं कैसे से उपयोगकर्ता की दूरी?
क्या कोई मेरी मदद कर सकता है?
यह पहले से ही उत्तर दिया गया है। @Chuck द्वारा यह [उत्तर] (http://stackoverflow.com/a/27943/1281775) देखें। – Seishin
मेरा सवाल यह है कि यदि अक्षांश और देशांतर जेसन (यूआरएल) के माध्यम से आ रहा है तो दूरी की गणना कैसे करें? – user6313669
क्या आपने उत्तर देखा? यह एक ऐसा कार्य है जो दो अक्षांश और लंबी स्थितियों के बीच की दूरी की गणना करता है। आपको डिवाइस की डिवाइस और सर्वर से लौटाए गए बिंदु के साथ उपयोगकर्ता की वर्तमान स्थिति पता लगाना होगा। फिर उस समारोह के साथ दूरी की गणना करें। – Seishin