Подтвердить что ты не робот

Получить выбранное местоположение из Google Maps

Я пытаюсь вернуть местоположение, выбранное пользователем в приложении Google Maps для Android, но я не могу найти информацию о том, как достичь этой задачи.

Я создал намерение, чтобы открыть операцию GMaps, но пользователь не может выбрать точку на карте, и не активирует действие для моего приложения, когда оно закрыто.

Я использую startActiviyForResult, так как я ожидаю результат от Activity.

4b9b3361

Ответ 1

используйте API Google. Вам просто нужно создать свою собственную MapActivity с MapView. Вот отличный учебник по API Google. Включая прием местоположения на пальцах. Надеюсь, это поможет.

Ответ 2

Вы можете просто использовать 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.

Слишком поздно ответить на ваш вопрос, но надеюсь, что это поможет кому-то с тем же требованием.

Ответ 3

Для карт 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

Ответ 6

Я думаю, вы ищете перетаскивание маркеров.

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.

Ответ 7

Вы можете легко сделать это с помощью Mapbox Android SDK. У них хороший учебник:

Как создать средство выбора местоположения для вашего приложения! | MapBox

Необходимыми основными компонентами являются:

  • Android ImageView для вывода вывода.
  • API-интерфейс Mapbox Android SDK Marker.
  • Службы Mapbox Android для геокодирования.

Location picker