【问题标题】:Get selected location from Google Maps activity从 Google 地图活动中获取选定的位置
【发布时间】:2010-12-13 14:58:57
【问题描述】:

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

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

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

【问题讨论】:

    标签: android google-maps


    【解决方案1】:

    您可以简单地使用PlacePicker 而不是实现自己的 MapActivity。不过,您需要在项目中添加 Google Play Services 库引用。

    只需使用 PlacePicker.IntentBuilder 提供的意图启动ActivityForResult

    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

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

    【讨论】:

    【解决方案2】:

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

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

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

      然后返回您的新位置。即 mLocation。

      【讨论】:

        【解决方案4】:

        您可以使用Mapbox Android SDK 轻松做到这一点。他们有一个很好的教程:

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

        需要的主要组件有:

        • 用于放置图钉的 Android ImageView。
        • Mapbox Android SDK 标记 API。
        • Mapbox Android 服务进行地理编码。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-06-25
          • 2014-06-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多