簡體   English   中英

如何通過哈希圖將多個標記添加到Google Map API? -(Android)

[英]How to add multiple markers to the Google map API via hashmap? - (Android)

我將所有位置的緯度和經度存儲在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,則表示其正確加載了markers數組。

看一下這些示例,希望對您有所幫助http://java67.blogspot.com.au/2013/02/10-examples-of-hashmap-in-java-programming-tutorial.html

根據接口,其輸入鍵和值對。 並且在代碼中,您一直用相同的鍵替換新值。

另外,要檢查這一點,您可以找出hashMap中有多少個元素,我假設您只有1個元素。

我希望這樣的事情

int key=0;
Loop{

   hMap.put("Latitude_key"+key, lat);
   hMap.put("Longitude_key"+key, longt);
   key++;
}

祝一切順利

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM