PlacePicker 获取设备位置和选择地点距离和时间道路

PlacePicker get device position and selected place for distance and time road

我将 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 地图以接近地点是一回事吗?

但是我在地图上看到 Picker 找到我的设备时有一个蓝点,我想知道是否可以获取我的设备坐标,或者我需要其他东西来获取设备坐标。

如果我需要其他东西来检索设备位置,这是使用 3G 连接和 GSP 实现的最佳方式?

无论如何,获取公里距离和时间旅行的唯一方法是使用 HTTP 请求?

在 Android 应用程序中获取位置的最佳方法是使用 Google Play 服务位置 API,记录在 https://developer.android.com/training/location/index.html

您可以进行一次调用来检索设备的最后已知位置,以及一种添加侦听器以接收设备位置随时间更新的方法。

在您的情况下,您可能只想检索设备的最后已知位置。 https://developer.android.com/training/location/retrieve-current.html.

提供包含代码示例的详细分步文档
  • 您将需要创建一个 Fused Location Provider Client 对象,如 "Create Location Services Client" 部分所述。您将在 onCreate() 方法中添加该代码。
  • 要实际获取位置,请使用 "Get the Last Known Location" 部分中的示例代码。在显示 Toast 消息后,您会将此代码放入 onActivityResult() 方法中。