2010-12-13 9 views
21

Google Maps Android 애플리케이션에서 사용자가 선택한 위치를 반환하려고하는데이 작업을 수행하는 방법에 대한 정보를 찾을 수 없습니다.Google지도에서 선택한 위치 가져 오기

GMaps 활동을 열기 위해 의도를 만들었지 만 사용자가지도에서 지점을 선택할 수 없거나 활동이 닫힐 때 활동이 내 응용 프로그램으로 되돌아 가지 않습니다.

Activity에서 결과를 기대하고 있으므로 startActiviyForResult을 사용하고 있습니다.

답변

15

은 Google API를 사용합니다. MapView를 사용하여 고유 한 MapActivity를 만들어야합니다. Here is great tutorial on Google API 손가락 탭에 수신 위치 포함. 희망이 도움이 될 것입니다.

+0

링크 만료되었습니다. 업데이트하십시오! – Killer

4

지정된 위치가 http://developer.android.com/guide/appendix/g-app-intents.html 인지도 만 열 수 있습니다.

대신 Maps External Library을 사용하여 MapView에서 고유 한 활동을 만들어야합니다.

+1

한숨! 지도 활동이이 간단한 사용 사례를 지원하기를 바랍니다. 외부지도 라이브러리를 사용하려면 앱에 인터넷 권한이 있어야합니다. 이는 내 앱에 과도한 부담입니다. – HRJ

6

지도 API V2의 경우 onMapClickListener를 사용할 수 있습니다. 자세한 내용은

map.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 

     @Override 
     public void onMapClick(LatLng point) { 
      Toast.makeText(getApplicationContext(), point.toString(), Toast.LENGTH_SHORT).show(); 
     } 
}); 

: https://developers.google.com/maps/documentation/android/interactivity

+0

고마워, 내가 이것을 찾고 있었다 –

1

난 당신이 끌어 마커를 찾고있는 것 같아요.

mMap.setMyLocationEnabled(true); 
mLocation = mMap.getMyLocation(); 
mMap.addMarker(new MarkerOptions().position(new LatLng(mLocation.getLatitude(), mLocation.getLongitude())).draggable(true)); 
      mMap.setOnMarkerDragListener(new OnMarkerDragListener() { 

       @Override 
       public void onMarkerDrag(Marker marker) { 

       } 
       @Override 
       public void onMarkerDragEnd(Marker marker) { 
        LatLng newLocation = marker.getPosition(); 
        mLocation.setLatitude(newLocation.latitude); 
        mLocation.setLongitude(newLocation.longitude); 
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(mLocation.getLatitude(), mLocation.getLongitude()), 15.0f)); 

       } 
       @Override 
       public void onMarkerDragStart(Marker marker) {} 

      }); 

다음으로 새 위치를 반환하십시오.

36

직접 MapActivity를 구현하는 대신 PlacePicker을 사용할 수 있습니다. 그래도 프로젝트에 Google Play 서비스 라이브러리 참조를 추가해야합니다. PlacePicker.IntentBuilder

에 의해 다음
int PLACE_PICKER_REQUEST = 1; 
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder(); 

Context context = getApplicationContext(); 
startActivityForResult(builder.build(context), PLACE_PICKER_REQUEST); 

그리고를 제공하는 의도로

단지에 startActivityForResult는

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == PLACE_PICKER_REQUEST) { 
    if (resultCode == RESULT_OK) { 
     Place place = PlacePicker.getPlace(data, this); 
     String toastMsg = String.format("Place: %s", place.getName()); 
     Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show(); 
    } 
    } 
} 

더 자세한 내용은 https://developers.google.com/places/android/placepicker를 참조하십시오 onActivityResult를

에서 결과를받을 수 있습니다.

너무 늦어서 질문에 답변 할 수 없지만 동일한 요구 사항을 가진 사람에게 도움이되기를 바랍니다.

+0

굉장 나는 이것을 찾고 있었다 :) 나는 그것을 시험 할 것이다 – hadi

+0

불행하게도 PlacePicker 활동은 사용자가 검색하는 것을 허락하지 않았다 – satur9nine

+0

이것은 매우 산뜻하다. A + – pandalion98

1

Mapbox Android SDK으로 쉽게 할 수 있습니다. How to build a location picker for your app! | Mapbox

필요한 주요 구성 요소

은 다음과 같습니다 : 드롭 핀

  • 안드로이드 이미지 뷰 그들은 좋은 자습서를 가지고있다.
  • 지도 박스 안드로이드 SDK 마커 API.
  • 지도 상자 Android 서비스에서 지오 코딩을 수행합니다.

Location picker

관련 문제