这是一个ListView,我可以显示城市和地点。我想显示从当前点到列出的位置的距离。
例如:
+++++++++++++++++++++++++
Name :Hotel Hilton
Category :hotel
distance:1km
+++++++++++++++++++++++++
如何计算和显示列表中的每个距离值?
ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();
JSONArray jsonArray = new JSONArray(response);
if (jsonArray != null) {
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject object = (JSONObject) jsonArray.get(i);
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_Name, object.getString("name"));
map.put(TAG_Category, object.getString("category"));
map.put(TAG_Lat, object.getString("lat"));
map.put(TAG_Lng, object.getString("lng"));
contactList.add(map);
}
}
ListAdapter adapter = new SimpleAdapter(this, contactList,
R.layout.menu_list_row, new String[] { TAG_Name,
TAG_Category }, new int[] { R.id.LR_Name,
R.id.LR_date });
list.setAdapter(adapter);
}
当前位置从GPS识别并存储为lat,lng。
答案 0 :(得分:0)
您可以使用Haversine公式计算距离。
http://devdiscoveries.wordpress.com/2010/02/01/android-distance-between-two-points-on-the-earth/
https://developers.google.com/maps/articles/phpsqlsearch_v3#findnearsql
答案 1 :(得分:0)
您可以使用:
float[] res = new float[3];
Location.distanceBetween(object.getDouble("lat"), object.getDouble("lng"), lat,lng, res);
假设前两个参数是双精度数,表示对象的位置,而lat
和lng
变量包含您当前的位置。
以米为单位的结果将为res[0]