Tôi đang tìm kiếm địa điểm trong các ứng dụng của mình bằng cách sử dụng địa điểm tự động điền của google và bây giờ tôi muốn có được vĩ độ và kinh độ của địa điểm mà tôi đã tìm kiếm. Làm thế nào để có được vĩ độ và kinh độ từ kết quả trả về bởi tự động điền địa điểm api bởi google trong android?nhận Lat Lang từ một địa điểm_id được trả về bởi địa điểm tự động hoàn tất api
Trả lời
Mỗi địa điểm được trả về trong phản hồi tự động điền địa điểm có Id và chuỗi tham chiếu như được giải thích here.
Sử dụng một trong hai (tốt nhất là Id kể từ khi tham khảo bị phản đối) để truy vấn API Địa điểm cho các thông tin đầy đủ về vị trí đó (bao gồm lat/lng): https://developers.google.com/places/documentation/details#PlaceDetailsRequests
Về bình luận Shyam của - Mã hóa địa lý sẽ chỉ làm việc nếu bạn có một địa chỉ đầy đủ trong phản hồi tự động hoàn tất, không phải lúc nào cũng như vậy. Đồng thời mã hóa địa lý cung cấp danh sách các kết quả có thể do mô tả địa điểm bạn nhận được trong phản hồi tự động hoàn tất không phải là duy nhất. Tùy thuộc vào nhu cầu của bạn, mã hóa địa lý có thể là đủ.
Mã hóa địa lý là một giải pháp rất gián tiếp và giống như giải pháp trả lời thứ hai cho biết, nếu bạn làm "Cửa hàng Apple", nó có thể không trả lại địa chỉ đầy đủ. Thay vào đó:
Place_ID chứa mọi thứ bạn cần. Tôi giả sử bạn biết cách lấy place_id từ API Địa điểm (họ có một ví dụ đầy đủ nếu không).
Sau đó kéo một yêu cầu thứ hai cho các chi tiết nơi (bao gồm vĩ độ và kinh độ dưới phần hình học) sử dụng place_id sau tài liệu này: https://developers.google.com/places/documentation/details?utm_source=welovemapsdevelopers&utm_campaign=mdr-devdocs
Điều này rất hữu ích để có được dữ liệu đầy đủ của một địa điểm. – karenms
Google Place Details là câu trả lời.
Từ place_id
bạn đã nhận, truy vấn Place Chi tiết cái gì đó như https://maps.googleapis.com/maps/api/place/details/json?placeid={placeid}&key={key}
và bạn có thể nhận được lat
và lng
từ result.geometry.location
JSON.
đoạn này cho phép có được các vĩ độ và kinh độ của một nơi theo định trở lại vào tự động hoàn toàn
public class PlacesDetails {
private static final String PLACES_API_BASE = "https://maps.googleapis.com/maps/api/place";
private static final String TYPE_AUTOCOMPLETE = "/autocomplete";
private static final String TYPE_DETAIL = "/details";
private static final String OUT_JSON = "/json";
//private static final String API_KEY = "------------ make your specific key ------------; // cle pour le serveur
public PlacesDetails() {
// TODO Auto-generated constructor stub
}
public ArrayList<Double> placeDetail(String input) {
ArrayList<Double> resultList = null;
HttpURLConnection conn = null;
StringBuilder jsonResults = new StringBuilder();
try {
StringBuilder sb = new StringBuilder(PLACES_API_BASE + TYPE_DETAIL + OUT_JSON);
sb.append("?placeid=" + URLEncoder.encode(input, "utf8"));
sb.append("&key=" + API_KEY);
URL url = new URL(sb.toString());
//Log.e("url", url.toString());
System.out.println("URL: "+url);
System.out.println("******************************* connexion au serveur *****************************************");
//Log.e("nous sommes entrai de test la connexion au serveur", "test to connect to the api");
conn = (HttpURLConnection) url.openConnection();
InputStreamReader in = new InputStreamReader(conn.getInputStream());
// Load the results into a StringBuilder
int read;
char[] buff = new char[1024];
while ((read = in.read(buff)) != -1) {
jsonResults.append(buff, 0, read);
}
System.out.println("le json result"+jsonResults.toString());
} catch (MalformedURLException e) {
//Log.e(LOG_TAG, "Error processing Places API URL", e);
return resultList;
} catch (IOException e) {
//Log.e(LOG_TAG, "Error connecting to Places API", e);
return resultList;
} finally {
if (conn != null) {
conn.disconnect();
}
System.out.println("******************************* fin de la connexion*************************************************");
}
try {
// Create a JSON object hierarchy from the results
//Log.e("creation du fichier Json", "creation du fichier Json");
System.out.println("fabrication du Json Objet");
JSONObject jsonObj = new JSONObject(jsonResults.toString());
//JSONArray predsJsonArray = jsonObj.getJSONArray("html_attributions");
JSONObject result = jsonObj.getJSONObject("result").getJSONObject("geometry").getJSONObject("location");
System.out.println("la chaine Json "+result);
Double longitude = result.getDouble("lng");
Double latitude = result.getDouble("lat");
System.out.println("longitude et latitude "+ longitude+latitude);
resultList = new ArrayList<Double>(result.length());
resultList.add(result.getDouble("lng"));
resultList.add(result.getDouble("lat"));
System.out.println("les latitude dans le table"+resultList);
} catch (JSONException e) {
///Log.e(LOG_TAG, "Cannot process JSON results", e);
}
return resultList;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
PlacesDetails pl = new PlacesDetails();
ArrayList<Double> list = new ArrayList<Double>();
list = pl.placeDetail("ChIJbf7h4osSYRARi8SBR0Sh2pI");
System.out.println("resultat de la requette"+list.toString());
}
}
Ref: - https://developers.google.com/places/android/place-details#get-place Liên kết ở trên cho một đối tượng nơi mà sẽ có lat và lâu dài. Đối tượng địa điểm bị loại bỏ khỏi sự lộn xộn mà một đối tượng được lấy từ vị trí tự động hoàn tất.
Sau đây đoạn mã trong đó sử dụng Google Places API for android làm việc cho tôi
Places.GeoDataApi.getPlaceById(mGoogleApiClient, placeId)
.setResultCallback(new ResultCallback<PlaceBuffer>() {
@Override
public void onResult(PlaceBuffer places) {
if (places.getStatus().isSuccess()) {
final Place myPlace = places.get(0);
LatLng queriedLocation = myPlace.getLatLng();
Log.v("Latitude is", "" + queriedLocation.latitude);
Log.v("Longitude is", "" + queriedLocation.longitude);
}
places.release();
}
});
Visit Google Places API for Android cho một danh sách đầy đủ các phương pháp để lấy dữ liệu từ một nơi
Places.GeoDataApi.getPlaceById(mGoogleApiClient, placeId)
.setResultCallback(new ResultCallback<PlaceBuffer>() {
@Override
public void onResult(PlaceBuffer places) {
if (places.getStatus().isSuccess() && places.getCount() > 0) {
final Place myPlace = places.get(0);
Log.i(TAG, "Place found: " + myPlace.getName());
LatLng latlangObj = myPlace.getLatLng();
Log.v("latitude:", "" + latlangObj.latitude);
Log.v("longitude:", "" + latlangObj.longitude);
} else {
Log.e(TAG, "Place not found");
}
places.release();
}
});
Sử dụng phương pháp này cho nhận được lat và lang từ placeid.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == Constant.REQUEST_LOCATION_CODE) {
Place place = PlaceAutocomplete.getPlace(this, data);
if (place != null) {
LatLng latLng = place.getLatLng();
mStringLatitude = String.valueOf(latLng.latitude);
mStringLongitude = String.valueOf(latLng.longitude);
EditTextAddress.setText(place.getAddress());
}
}
}
Với đoạn mã trên, bạn có thể lấy LatLng cũng như địa chỉ String. Sử dụng LatLng bất cứ nơi nào bạn muốn.
- 1. Giới hạn Google Địa điểm tự động hoàn tất để chỉ trả lại địa chỉ
- 2. Trình chỉnh sửa địa điểm với tự động hoàn tất
- 3. Địa điểm tự động hoàn tất bằng cách đặt chỗ ở và địa điểm
- 4. Tự động hoàn thành API Google Địa điểm v3 - không thể hoạt động tại địa phương?
- 5. API Tự động điền của Google Địa điểm không trả về tên thành phố mới nhất
- 6. người dân địa phương được trả về tự động xvalues
- 7. Cách sử dụng API địa điểm API Tự động hoàn thànhFilter
- 8. API địa điểm Google, nhận địa chỉ người dùng
- 9. Cách lấy ảnh của một địa điểm từ bản đồ google hoặc địa điểm API
- 10. API địa điểm dành cho Android: nhận các dòng địa chỉ từ Place.getAddress()
- 11. Kết hợp các địa điểm Tự động hoàn thành và API múi giờ của Google
- 12. Địa điểm FourSquare API
- 13. sự kiện thích hợp trong các địa điểm google tự động hoàn tất chọn bằng chuột
- 14. Địa điểm API Google place_id dài
- 15. Các địa điểm của Google tự động hoàn tất với js góc
- 16. truy xuất các điểm ưa thích (địa điểm du lịch/địa điểm) của một địa điểm/quốc gia bằng cách sử dụng địa điểm google api
- 17. Địa chỉ mã hóa địa lý - nhận quận của một địa chỉ nhất định (Google API)
- 18. tweepy/twitter nhận được tất cả các tweet từ một địa điểm:
- 19. Nhận địa chỉ đường phố tại cặp lat/long
- 20. API đồ thị: nhận các địa điểm lân cận
- 21. Cách nhận tất cả địa điểm (hoặc loại địa điểm cụ thể như nhà hàng) ở thành phố hoặc quốc gia có API Google Địa điểm?
- 22. Sử dụng API Google Địa điểm để nhận các thành phố lân cận cho một địa điểm cụ thể
- 23. Không nhận được Địa điểm cụ thể từ PlaceBuffer
- 24. Tự động hoàn thành JavaScript của Google Địa điểm: tôi có thể xóa quốc gia khỏi tên địa điểm không?
- 25. Sự nhầm lẫn về đánh giá API Google Địa điểm
- 26. Chi tiết địa chỉ Google API trả lại cuộc gọi NOT_FOUND cho tham chiếu tự động hoàn thành hiện tại
- 27. API Google Địa điểm không trả lại place_id
- 28. Lựa chọn lực lượng tự động hoàn thành của Google Địa điểm
- 29. Cách nhận giờ mở cửa của Địa điểm bằng Trình tạo mục đích Tự động hoàn thành địa điểm trong Android?
- 30. API biểu đồ Facebook: Nhận sự kiện theo Địa điểm
Sử dụng bộ mã hóa địa lý. Tham khảo: http://developer.android.com/reference/android/location/Geocoder.html – shyam
API hiện tại không cho phép thực hiện với một yêu cầu vì có thể với API Web. Vui lòng upvote https://issuetracker.google.com/issues/35828699 để yêu cầu tọa độ được hiển thị trong phản hồi dự đoán. – AlexKorovyansky