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() 方法中。
我将 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() 方法中。