从Google地图活动中获取所选位置

我正在尝试返回用户在Google Maps Android应用程序中select的位置,但似乎无法find有关如何完成此任务的信息。

我创build了一个Intent来打开GMaps Activity,但是用户不能在地图上select一个点,Activity也不会在我的应用程序closures时返回一个点。

我正在使用startActiviyForResult ,因为我期待从Activity返回结果。

Solutions Collecting From Web of "从Google地图活动中获取所选位置"

使用Google API。 您只需要使用MapView创build自己的MapActivity。 这里有一个很棒的Google API教程,包括手指点击接收位置。 希望这会有所帮助。

您可以简单地使用PlacePicker,而不是实现自己的MapActivity。 不过,您需要在项目中添加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); 

然后在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

有点太迟回答你的问题,但希望这可以帮助有相同的要求的人。

对于地图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

没有这种可能性 – 您只能打开指定位置的地图http://developer.android.com/guide/appendix/g-app-intents.html

相反,你应该使用地图外部库创build你自己的与MapView的活动。

嗨,你需要遵循这个链接。只要通过它,希望你会得到你的解决scheme。 http://mobiforge.com/developing/story/using-google-maps-android

我想你正在寻找标记拖动。

 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) {} }); 

然后返回你的新位置。

您可以使用Mapbox Android SDK轻松完成此操作 。 他们有一个很好的教程:

如何为您的应用程序构build位置select器! | Mapbox

所需的主要组件是:

  • Android ImageView的放置引脚。
  • Mapbox Android SDK标记API。
  • Mapbox Android服务进行地理编码。

位置选择器