2010-12-13 62 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

相关问题