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.