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

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

我创建了一个Intent来打开GMaps Activity,但是用户无法在地图上选择一个点,也不会在关闭时将Activity返回给我的应用程序。

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

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

使用Google API。 您只需要使用MapView创建自己的MapActivity。 这是关于Google API的精彩教程,包括手指点击接收位置。 希望这会有所帮助。

您可以简单地使用PlacePicker而不是实现自己的MapActivity。 您需要在项目中添加Google Play服务库参考。

只需使用PlacePicker.IntentBuilder提供的意图startActivityForResult即可

 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 。

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

对于maps 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 。

相反,您应该使用Maps External Library使用MapView创建自己的Activity。

你需要关注这个链接。只需要通过它,希望你能得到你的解决方案。 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) {} }); 

然后返回你的新location.ie mLocation。

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

如何为您的应用构建位置选择器! | Mapbox

所需的主要组件是:

  • 用于drop pin的Android ImageView。
  • Mapbox Android SDK Marker API。
  • Mapbox Android Services进行地理编码。

位置选择器