2010-12-13 75 views
21

我想要返回用戶在Google Maps Android應用程序中選擇的位置,但似乎無法找到有關如何完成此任務的信息。從Google地圖活動中獲取所選位置

我創建了一個意圖來打開GMaps活動,但用戶無法在地圖上選擇一個點,也不會在活動關閉時返回一個指向我的應用程序的點。

我使用的是startActiviyForResult,因爲我期待的是活動的結果。

回答

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

謝謝,我正在尋找這 – 2015-10-23 16:56:47

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 mLocation。

36

您可以簡單地使用PlacePicker而不是實現自己的MapActivity。不過,您需要在項目中添加Google Play服務庫參考。

只是startActivityForResult與PlacePicker.IntentBuilder

提供
int PLACE_PICKER_REQUEST = 1; 
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder(); 

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

然後意圖接收結果在onActivityResult

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進一步的細節。

有點太遲迴答你的問題,但希望這可以幫助有相同需求的人。

+0

真棒我一直在尋找這個:)我會嘗試它 – hadi 2015-07-01 11:46:31

+0

不幸的是,PlacePicker活動沒有允許用戶搜索 – satur9nine 2015-08-16 05:21:11

+0

這是非常整潔。 A + – pandalion98 2016-11-04 16:26:31

相關問題