PlacePicker получить положение устройства и выбранное место для расстояния и времени дороги

Я добавляю PlacePicker виджет для моего приложения, и теперь я могу получить широту и долготу выбранного местоположения. С этим кодом:

public class TravelFragment extends Fragment {

    int PLACE_PICKER_REQUEST = 1;
    TextView lat;
    TextView lng;

    public TravelFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        final FragmentActivity activity = getActivity();

        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_travel, container, false);

        lat = (TextView) view.findViewById(R.id.latitudeValue);
        lng = (TextView) view.findViewById(R.id.longitudeValue);

        Button findLocation = (Button) view.findViewById(R.id.buttonSearchLocation);

        findLocation.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
                try {
                    startActivityForResult(builder.build(activity), PLACE_PICKER_REQUEST);
                } catch (GooglePlayServicesRepairableException e) {
                    e.printStackTrace();
                } catch (GooglePlayServicesNotAvailableException e) {
                    e.printStackTrace();
                }
            }
        });


        return view;
    }

  public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == PLACE_PICKER_REQUEST) {
            if (resultCode == RESULT_OK) {

                double arrivalLat;
                double arrivalLng;
                String stringLat;
                String stringLng;


                Place place = PlacePicker.getPlace(data, getActivity());
                arrivalLat = place.getLatLng().latitude;
                arrivalLng = place.getLatLng().longitude;
                stringLat = Double.toString(arrivalLat);
                stringLng = Double.toString(arrivalLng);

                lat.setText(stringLat);
                lng.setText(stringLng);

                String toastMsg = String.format("Place: %s",  place.getLatLng());

               // place.getLatLng();

                Toast.makeText(getActivity(), toastMsg, Toast.LENGTH_LONG).show();
            }
        }
    }

}

И если я хорошо понимаю, что это то же самое, что использовать HTTP-запрос для Google Maps, чтобы добраться до места?

Но я вижу на карте, что сборщик находит мое устройство с синей точкой, я хотел бы знать, возможно ли получить координаты моего устройства, или мне нужно что-то еще для получения координат устройства.

Если мне нужно что-то еще для получения позиции устройства, что является лучшим способом сделать это, используя соединение 3G и GSP?

В любом случае, для получения расстояния в км и путешествий во времени единственным способом является использование HTTP-запроса?

1 ответ

Решение

Лучший способ определить местоположение в приложении для Android - использовать API определения местоположения в Службах Google Play, описанный по адресу https://developer.android.com/training/location/index.html.

Существует один вызов, который вы можете сделать, чтобы получить последнее известное местоположение устройства, и способ добавить слушателя для получения обновлений о местоположении устройства с течением времени.

В вашем случае вы, вероятно, хотите просто получить последнее известное местоположение устройства. Подробная пошаговая документация с примерами кода доступна по адресу https://developer.android.com/training/location/retrieve-current.html.

  • Вам необходимо будет создать объект клиента Fused Location Provider Client, как описано в разделе "Создание клиента служб определения местоположения". Вы добавите этот код в свой метод onCreate().
  • Чтобы получить местоположение, используйте пример кода в разделе "Получить последнее известное местоположение". Вы добавите этот код в метод onActivityResult() после отображения сообщения Toast.
Другие вопросы по тегам