Android从谷歌地址得到lat& long

时间:2014-02-10 11:48:42

标签: android google-places-api

我为我的应用程序实现了Google Place API自动完成功能,如下所示:https://developers.google.com/places/training/autocomplete-android

不,只是使用该地址生成Toast

如何从所选地址获取latitudelongitude

4 个答案:

答案 0 :(得分:1)

使用方法

来自Android Geocoder API

public List<Address> getFromLocationName (String locationName, int maxResults),传递位置名称和您想要的最大结果数量,您应该好好去。

例如

 Geocoder coder = new Geocoder(this);
    try {
        ArrayList<Address> adresses = (ArrayList<Address>) coder.getFromLocationName("Some Address", 10);
        for(Address add : adresses){
                double longitude = add.getLongitude();
                double latitude = add.getLatitude();
        }
    } catch (IOException e) {
        e.printStackTrace();
    } catch(IllegalArgumentException e){
        e.printStackTrace();
    }

答案 1 :(得分:1)

如果它有帮助,我最近在Java中为Google Places API创建了一个库。

自动完成非常简单:

GooglePlaces client = new GooglePlace("apiKey");
List<Prediction> predictions = client.getPlacePredictions("Empire");
for (Prediction prediction : predictions) {
    String description = prediction.getDescription();
    // etc etc
}

从地址获取纬度 - 经度就像这样简单。

List<Place> places = client.getPlacesByQuery(address, GooglePlaces.MAXIMUM_RESULTS);
for (Place place : places) {
    if (place.getAddress().equals(address)) {
        double lat = place.getLatitude();
        double lng = place.getLongitude();
    }
}

https://github.com/windy1/google-places-api-java

答案 2 :(得分:0)

您只需使用google maps api即可获得lat和long

http://maps.google.com/maps/api/geocode/json?address=&sensor=false

在上面的链接中你必须在“address =”旁边添加地址,你可以用lat和long以及其他一些信息来获取json数据。

答案 3 :(得分:0)

尝试使用GeoDataClient。请参阅GeoDataClientPlace IDs and details

geoDataClient.getPlaceById(autoCompletePredictionItem.getPlaceId())
                        .addOnCompleteListener(new OnCompleteListener<PlaceBufferResponse>() {
                            @Override
                            public void onComplete(@NonNull Task<PlaceBufferResponse> task) {
                                if (task.isSuccessful()) {
                                    PlaceBufferResponse places = task.getResult();
                                    Place myPlace = places.get(0);
                                    Log.e(TAG, "Place found: " + myPlace.getLatLng().toString());
                                    places.release();
                                } else {
                                    Log.e(TAG, "Place not found.");
                                }
                            }
                        });