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

时间:2010-12-13 14:58:57

标签: android google-maps

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

我创建了一个Intent来打开GMaps活动,但是用户无法在地图上选择一个点,也不会在关闭时向Activity返回一个点。

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

7 个答案:

答案 0 :(得分:44)

您只需使用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

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

答案 1 :(得分:16)

使用Google API。您只需要使用MapView创建自己的MapActivity。 Here is great tutorial on Google API包括手指点击的接收位置。希望这会有所帮助。

答案 2 :(得分:7)

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

答案 3 :(得分:5)

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

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

答案 4 :(得分:2)

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

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。

答案 5 :(得分:1)

你需要关注这个链接。只需要通过它,希望你能得到你的解决方案。 http://mobiforge.com/developing/story/using-google-maps-android

答案 6 :(得分:1)

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

  

How to build a location picker for your app! | Mapbox

所需的主要组件是:

  • Android ImageView for drop pin。
  • Mapbox Android SDK Marker API。
  • 使用Mapbox Android服务进行地理编码。

Location picker