2013-10-16 1 views
0

글쎄,이 주제와 관련된 몇 가지 주제를 가지고 있지만 아무도 명확한 해결책을 제시하지 못하는 것 외에는 아직 논리를 얻지 못했습니다. 어쨌든, 나는 그것을 명확하게 다시 묻고, 샘플 앱에서 캡쳐 화면을 제공하여 마술을하기를 바랄 것이다.android mapsv2의 현재 위치를 동적으로 검색하는 중

아래에서 볼 수 있듯이 Google지도에는 맞춤 마커가 있습니다. Imageview을 추가하여 내 시나리오에 구현할 수 있습니다. 지도 위에는 TextView이 있습니다. 지도에서 마커의 위치가 변경되면 주소가 동적으로 변경됩니다. 그러나 우리는 드래그되지 않습니다 & 마커를 떨어 뜨리면 중심에 고정되고 드래그되지 않습니다. 우리가하는 일은지도를 패닝하는 것뿐입니다. 패닝을 중지하면 마커가지도의 어딘가에 표시되고 주소는 Textview에 빠르게 표시됩니다.

onMarkerDragEnd()을 처리하여 주소를 변경할 수 있지만 다른 시나리오입니다. 또한 GPS 연결이 없습니다. 클래스를 사용하여 위도와 경도로보기 screenPosition을 변환하는 것 같습니다. 공식 사이트를 확인했지만 구현 방법을 알지 못했습니다.

너무 합계가 TextView에 동적 주소 변경을 제공하려면 어떻게해야합니까? &지도를 드래그하지 않고지도를 이동하려면 어떻게해야합니까? 마커를 드래그하여가이 코드를 참조의 현재 주소를 표시 끝날 때 너무 내가 드래그 방법을 처리하는 방법을 참조하십시오

또한 여기 내 코드입니다

@Override 
public void onMarkerDragEnd(Marker marker) { 
    LatLng position=marker.getPosition(); 

    String filterAddress = ""; 
    Geocoder geoCoder = new Geocoder(
      getBaseContext(), Locale.getDefault()); 
    try { 
     List<Address> addresses = geoCoder.getFromLocation(
       position.latitude, 
       position.longitude, 1); 

     if (addresses.size() > 0) { 
      for (int index = 0; 
      index < addresses.get(0).getMaxAddressLineIndex(); index++) 
       filterAddress += addresses.get(0).getAddressLine(index) + " "; 
     } 
    }catch (IOException ex) {   
     ex.printStackTrace(); 
    }catch (Exception e2) { 
     // TODO: handle exception 

     e2.printStackTrace(); 
    } 


    TextView myTextView = (TextView) findViewById(R.id.test); 
    myTextView.setText("Address " + filterAddress); 




    Log.d(getClass().getSimpleName(), String.format("Dragged to %f:%f", 
      position.latitude, 
      position.longitude)); 
} 

Here

답변

0

당신이 따라하면 내가 다시

http://maps.google.com/maps/api/geocode/json?address=mumbai&sensor=false

을 제공하고있는 URL lat/lng 주소로 json 형식으로 데이터를 변환합니다.

public static void getLatLongFromAddress(String youraddress) { 
    String uri = "http://maps.google.com/maps/api/geocode/json?address=" + 
        youraddress + "&sensor=false" 
    HttpGet httpGet = new HttpGet(uri); 
    HttpClient client = new DefaultHttpClient(); 
    HttpResponse response; 
    StringBuilder stringBuilder = new StringBuilder(); 

    try { 
     response = client.execute(httpGet); 
     HttpEntity entity = response.getEntity(); 
     InputStream stream = entity.getContent(); 
     int b; 
     while ((b = stream.read()) != -1) { 
      stringBuilder.append((char) b); 
     } 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    JSONObject jsonObject = new JSONObject(); 
    try { 
     jsonObject = new JSONObject(stringBuilder.toString()); 

     lng = ((JSONArray)jsonObject.get("results")).getJSONObject(0) 
      .getJSONObject("geometry").getJSONObject("location") 
      .getDouble("lng"); 

     lat = ((JSONArray)jsonObject.get("results")).getJSONObject(0) 
      .getJSONObject("geometry").getJSONObject("location") 
      .getDouble("lat"); 

     Log.d("latitude", lat); 
     Log.d("longitude", lng); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

} 
+0

어디서이 메서드를 호출해야합니까? onCreate 또는 다른 곳에서? 또한 lat와 lng는 전역 변수이거나 그 일식과 같이 변수가 아니라고 결론을 내릴 수 있습니다. 감사합니다. – regeme