2010-12-13 15 views
21

Google Maps Androidアプリケーションでユーザーが選択した場所を返そうとしていますが、このタスクの達成方法に関する情報が見つからないようです。Googleマップのアクティビティから選択した場所を取得

私はGMapsアクティビティを開くためにインテントを作成しましたが、ユーザーはマップ上のポイントを選択することはできません。また、アクティビティは、閉じたときにアプリケーションにポイントを返すこともありません。

私は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

ため息! Mapsアクティビティがこのシンプルなユースケースをサポートしたいと思っています。外部の地図ライブラリを使用するには、アプリでインターネットの許可が必要です。これはアプリの過剰な使用です。 – 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) {} 

      }); 

次に、新しいlocation.i.eの配達を返します。

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

驚くばかり探していた:)私は残念ながらPlacePicker活動は、ユーザーがこれは非常にきれいである – hadi

+0

それをしようとします。 A + – satur9nine

+0

を検索することができていない – pandalion98

1

Mapbox Android SDKで簡単に行うことができます。 How to build a location picker for your app! | Mapbox

必要な主要コンポーネント

は次のとおりです:ドロップピンの

  • AndroidのImageViewの彼らは良いチュートリアルを持っています。
  • Mapbox Android SDKマーカーAPI。
  • Mapbox Androidのサービスは、ジオコーディングを行います。

Location picker

関連する問題