2013-03-05 29 views
2

我想實現這樣的事情:HashMap和谷歌地圖

我有什麼 我有latlng值JSON數據,我已經把所有的這些爲Hashmap,我也做它和它的工作

我需要什麼 我怎樣才能把這些存儲latlng值到谷歌地圖,更多的標記?

我解析JSON數據

ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>(); 
    JSONParser jParser = new JSONParser(); 
    JSONArray json = jParser.getJSONFromUrl(url); 
    try { 
      for(int i = 0; i < json.length(); i++){ 
       JSONObject c = json.getJSONObject(i); 

       String lat = c.getString(TAG_LAT); 
       String lng = c.getString(TAG_LNG); 



      // creating new HashMap 
      HashMap<String, String> map = new HashMap<String, String>(); 

      // adding each child node to HashMap key => value 
      map.put(TAG_LAT, lat); 
      map.put(TAG_LNG, lng); 

      // adding HashList to ArrayList 
      contactList.add(map); 
      } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
     Log.e("JSON Parser", "Error parsing data " + e.toString()); 

    } 

問題該代碼

我不知道我應該開始,我怎樣才能把超過1個標記到谷歌地圖?

 SupportMapFragment mapFrag= 
        (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map); 
      initListNav(); 
      map=mapFrag.getMap(); 

      CameraUpdate center= 
        CameraUpdateFactory.newLatLng(latvalue, lngvalue); 

      CameraUpdate zoom=CameraUpdateFactory.zoomTo(13); 

      map.moveCamera(center); 
      map.animateCamera(zoom); 

      addMarker(map, latvalue , lngvalue); 

回答

2

它遍歷數組是否是問題,而不是你如何做到這一點。

for (HashMap<String, String> hashMap : contactList) { 
    map.addMarker(new MarkerOptions() 
     .position(new LatLng(hashMap.get(TAG_LAT) , hashMap.get(TAG_LNG))) 
     .title("Another marker")); 
} 

編輯:

mMap = ((SupportMapFragment) 
    getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); 

    mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE); 

    ArrayList<LatLng> contactList = new ArrayList<LatLng>(); 

    contactList.add(new LatLng(48.8742, 2.3470)); 
    contactList.add(new LatLng(0, 0)); 

    for (LatLng latLon : contactList) { 
     mMap.addMarker(new MarkerOptions().position(latLon).title("Another marker")); 
    } 

編輯2: 與HashMap中同樣

ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>(); 

//Paris 
{ 
    // creating new HashMap 
    HashMap<String, String> map = new HashMap<String, String>(); 

    // adding each child node to HashMap key => value 
    map.put(TAG_LAT, "48.8742"); 
    map.put(TAG_LNG, "2.3470"); 

    // adding HashList to ArrayList 
contactList.add(map); 
} 

//London 
{ 
    // creating new HashMap 
    HashMap<String, String> map = new HashMap<String, String>(); 

    // adding each child node to HashMap key => value 
    map.put(TAG_LAT, "51.5171"); 
    map.put(TAG_LNG, "0.1062"); 

    // adding HashList to ArrayList 
    contactList.add(map); 
} 

for (HashMap<String, String> hashMap : contactList) { 
    mMap.addMarker(new MarkerOptions() 
     .position(new LatLng(Double.parseDouble(hashMap.get(TAG_LAT)) ,   
      Double.parseDouble(hashMap.get(TAG_LNG)))) 
     .title("Another marker")); 
} 

編輯3,如何獲取標記點擊回調:

mMap.setOnMarkerClickListener(new OnMarkerClickListener() { 

    @Override 
    public boolean onMarkerClick(Marker arg0) { 
     Log.e("onMarkerClick", "test: "+arg0.getTitle()); 
     return false; 
    } 
}); 
+0

是的,但它只顯示1個標記。 – Tirolel 2013-03-05 13:25:06

+0

編輯答案 – Flaxie 2013-03-05 14:03:24

+0

其仍然相同,地圖上只有1個標記與標題另一個標記。 – Tirolel 2013-03-05 14:08:44

-1

您應該使用Google Maps API V2。在Google Maps API Demo V2中,您可以看到如何將標記添加到GoogleMap mMap

// Uses a custom icon. 
mSydney = mMap.addMarker(new MarkerOptions() 
     .position(SYDNEY) 
     .title("Sydney") 
     .snippet("Population: 4,627,300")); 

在這個例子中SYDNEYLatLong點和標題和代碼段是自定義信息窗口。只需查看你的Hashmap並將每個標記添加到地圖。您不一定需要將每個標記分配到Marker變量(就像他們在mSydney的示例中那樣)。

+0

啊蔭使用Google Maps V2。我可以爲單個對象獲取地圖,緯度和長度,但如果我想將超過1個對象放入地圖 - > Iam丟失,我不知道如何獲取所有對象並將其插入到addMarker中作爲列表lat&long值 – Tirolel 2013-03-05 13:20:01