我将所有位置的纬度和经度存储在 MySQL 数据库中。我从数据库获取数据并用 JSON 解析它。我将所有解析的值存储在 HashMap 集合中。但是,当我迭代 HashMap 集合时,我只能获取最后一个键/值(而不是全部)。我需要做什么才能获取每个位置的所有键/值?这是我的代码:
package com.example.maptest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.http.NameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.os.AsyncTask;
import android.util.Log;
import com.google.android.gms.maps.GoogleMap;
public class ShowAllMarkers {
JSONParser jParser = new JSONParser();
private static String url_all_markers = "http://...............";
JSONParser jsonParser = new JSONParser();
JSONArray markers;
GoogleMap map;
// HashMap<String, String> markersList=new HashMap<String, String>();;
Map<String, String> hMap = new HashMap<String, String>();
public ShowAllMarkers(GoogleMap map) {
this.map = map;
}
public void getAllMarkers() {
new AsyncTask<String, String, String>() {
@Override
protected String doInBackground(String... args) {
List<NameValuePair> params = new ArrayList<NameValuePair>();
JSONObject json = jParser.makeHttpRequest(url_all_markers,
"GET", params);
// in success;
try {
int success = json.getInt("success");
if (success == 1) {
markers = json.getJSONArray("markers");
for (int i = 0; i < markers.length(); i++) {
JSONObject markersObject = markers.getJSONObject(i);
String lat = markersObject.getString("lat");
String longt = markersObject.getString("long");
hMap.put("Latitude", lat);
hMap.put("Longitude", longt);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
// Outputs hashmap elements as key and value
Set<Map.Entry<String, String>> set = hMap.entrySet();
for (Map.Entry<String, String> me : set) {
Log.d("JWP", "Key is:" + me.getKey() + ", value is: " + me.getValue());
}
}
}.execute();
}
}
这是我的 json 输出:
{
"markers":[
{
"lat":"40.4176083",
"long":"49.9389495",
"title":"Location",
"description":""
},
{
"lat":"40.4175711",
"long":"49.9389274",
"title":"Location",
"description":""
},
{
"lat":"40.4176178",
"long":"49.9389621",
"title":"Location",
"description":""
},
{
"lat":"40.4176178",
"long":"49.9389621",
"title":"Location",
"description":""
},
{
"lat":"40.4176178",
"long":"49.9389621",
"title":"Location",
"description":""
},
{
"lat":"40.4176178",
"long":"49.9389621",
"title":"Location",
"description":""
},
{
"lat":"40.4176178",
"long":"49.9389621",
"title":"Location",
"description":""
},
{
"lat":"40.4176126",
"long":"49.9389561",
"title":"Location",
"description":""
}
],
"success":1
}
提前谢谢您。
最佳答案
我认为这是你使用 hashMap 的方式。
如果markers.length()给出的值大于1则意味着它正确加载了标记数组。
看看这些例子,希望对你有帮助 http://java67.blogspot.com.au/2013/02/10-examples-of-hashmap-in-java-programming-tutorial.html
根据接口(interface),它接收的是key和value对。在您的代码中,您不断用相同的键替换新值。
此外,要检查这一点,您可以找出 hashMap 中有多少个元素,我假设您只有 1 个。
我希望有这样的事情
int key=0;
Loop{
hMap.put("Latitude_key"+key, lat);
hMap.put("Longitude_key"+key, longt);
key++;
}
祝一切顺利
关于java - 如何通过hashmap向Google map API添加多个标记? - (安卓),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21174924/