2013-03-05 5 views
2

나는 이런 식으로 뭔가를 구현하고 싶습니다 그것과는해시 맵과 구글 맵

작업 내가 필요로 무엇 좀 더 마커로, 구글지도에이 저장 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()); 

    } 

문제를 구문 분석이 코드를 가지고 내가 시작해야하는 위치 몰라요

, 나는 Google지도에 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 : 해시 맵과 같은

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")); 
} 

EDIT 3, 마커 클릭에 콜백을 얻는 방법 :

mMap.setOnMarkerClickListener(new OnMarkerClickListener() { 

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

음,하지만 마커 1 개만 표시됩니다. – Tirolel

+0

답변을 – Flaxie

+0

여전히 수정했습니다 제목이있는지도에는 단 하나의 마커가 있습니다 또 다른 마커가 있습니다. – Tirolel

-1

Google Maps API V2를 사용해야합니다. Google Maps API Demo V2에서 GoogleMap mMap에 마커가 추가 된 방법을 확인할 수 있습니다. 이 예 SYDNEY에서

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

LatLong 점과 제목입니다 및 사용자 정의 정보창위한 니펫을. 해시 맵을 살펴보고 각 마커를지도에 추가하면됩니다. 위의 예 에서처럼 Marker 변수에 각 마커를 할당 할 필요는 없습니다 (예 : mSydney).

+0

참 스피을 Google Maps V2를 사용합니다. 하나의 단일 객체에 대해지도, 위도와 경도를 구할 수 있지만지도에 1 개 이상의 객체를 넣고 싶으면 - Iam을 잃어 버렸습니다. 모든 객체를 가져 와서 addMarker의 목록으로 삽입하는 방법을 알지 못합니다. 위도 및 경도 값 – Tirolel