The Google Places API for Android provides your app with rich information about places, including the place's name and address, the geographical location specified as latitude/longitude coordinates, the type of place (such as night club, pet store, museum), and more. To access this information for a specific place, you can use the place ID, a stable identifier that uniquely identifies a place.
Place details
The
Place
object provides information about a specific place. You can get hold of a
Place
object in the following ways:
- Call
PlaceDetectionApi.getCurrentPlace()– See the guide to getting current place. - Add a
PlacePickerUI widget, then callPlacePicker.getPlace()– See the guide to adding a place picker. - Call
GeoDataApi.getPlaceById– See the guide to getting a place by ID.
Use the following methods to retrieve data from a
Place:
getName()– The place's name.getAddress()– The place's address, in human-readable format.getID()– The textual identifier for the place. Read more about place IDs in the rest of this page.getPhoneNumber()– The place's phone number.getWebsiteUri()– The URI of the place's website, if known. This is the website maintained by the business or other entity associated with the place. Returns null if no website is known.getLatLng()– The geographical location of the place, specified as latitude and longitude coordinates.getViewport()– A viewport, returned as aLatLngBoundsobject, useful for displaying the place on a map. May return null if the size of the place is not known.getLocale()– The locale for which the name and address are localized.getPlaceTypes()– A list of place types that characterize this place. For a list of available place types, see the documentation for thePlaceinterface.getPriceLevel()– The price level for this place, returned as an integer with values ranging from 0 (cheapest) to 4 (most expensive).getRating()– An aggregated rating of the place, returned as a float with values ranging from 1.0 to 5.0, based on aggregated user reviews.
Some simple examples:
final CharSequence name = place.getName(); final CharSequence address = place.getAddress(); final LatLng location = place.getLatLng();
Get a place by ID
A place ID is a textual identifier that uniquely identifies a place. In
the Google Places API for Android, you can retrieve the ID of a place by calling
Place.getId().
The
Place Autocomplete service
also returns a place ID for each place that matches the supplied search query
and filter. You can store the place ID and use it to retrieve the
Place
object again later.
To get a place by ID, call
GeoDataApi.getPlaceById,
passing one or more place IDs.
The API returns a
PlaceBuffer
in a
PendingResult.
The
PlaceBuffer
contains a list of
Place
objects that match the supplied place IDs.
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());
} else {
Log.e(TAG, "Place not found");
}
places.release();
}
});
Display attributions in your app
When your app displays information obtained from
GeoDataApi.getPlaceById,
the app must also display attributions. See the documentation on
attributions.
More about place IDs
The place ID used in the Google Places API for Android is the same identifier as used in the Google Places API Web Service.
Each place ID can refer to only one place, but a single place can have more than one place ID. The most common case for handling multiple IDs for a place is when you've added a place that's initially scoped to your app, and then receives a Google-wide scope.
There are other circumstances which may cause a place to get a new place ID. For example, this may happen if a business moves to a new location.
When you request a place by specifying a place ID, you can be confident that you will always receive the same place in the response (if the place still exists). Note, however, that the response may contain a place ID that is different from the one in your request.
For more information, see the place ID overview.