如何为 Google PlaceAutocomplete 设置语言
How to set language for Google PlaceAutocomplete
我正在使用 Google PlaceAutocomplete,因此用户可以 select 他的地址。
我的代码是:
mGoogleApiClient = new GoogleApiClient.Builder(MainActivity.this)
.addApi(Places.GEO_DATA_API)
.enableAutoManage(this, GOOGLE_API_CLIENT_ID, this)
.addConnectionCallbacks(this)
.build();
AutocompleteFilter typeFilter = new AutocompleteFilter.Builder()
.setCountry("IQ")
.build();
mAutocompleteTextView.setOnItemClickListener(mAutocompleteClickListener);
mPlaceArrayAdapter = new PlaceArrayAdapter(this, android.R.layout.simple_list_item_1,
BOUNDS_MOUNTAIN_VIEW, typeFilter);
mAutocompleteTextView.setAdapter(mPlaceArrayAdapter);
}
private AdapterView.OnItemClickListener mAutocompleteClickListener
= new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
final PlaceArrayAdapter.PlaceAutocomplete item = mPlaceArrayAdapter.getItem(position);
final String placeId = String.valueOf(item.placeId);
Log.i(TAG, "Selected: " + item.description);
PendingResult<PlaceBuffer> placeResult = Places.GeoDataApi
.getPlaceById(mGoogleApiClient, placeId);
placeResult.setResultCallback(mUpdatePlaceDetailsCallback);
Log.i(TAG, "Fetching details for ID: " + item.placeId);
}
};
private ResultCallback<PlaceBuffer> mUpdatePlaceDetailsCallback
= new ResultCallback<PlaceBuffer>() {
@Override
public void onResult(PlaceBuffer places) {
if (!places.getStatus().isSuccess()) {
Log.e(TAG, "Place query did not complete. Error: " +
places.getStatus().toString());
return;
}
// Selecting the first object buffer.
final Place place = places.get(0);
CharSequence attributions = places.getAttributions();
mNameView.setText(Html.fromHtml(place.getAddress() + ""));
}
};
我想要阿拉伯语的结果。经过一些研究,我发现它取决于用户系统语言,有没有办法让它只用阿拉伯语?
没有。您可以使用 web api,但是:
The language code, indicating in which language the results should be returned, if possible.
更多:https://developers.google.com/places/web-service/autocomplete
这是支持的语言列表https://developers.google.com/maps/faq#languagesupport,您可以从这里获取语言代码。
所以当你调用地方详情api时,你可以添加language
参数,这个参数是可选的,详情见下面url
https://developers.google.com/places/web-service/details
Places API returns 您使用短地址和 latlng 坐标放置 Place 对象,但要使用 [=13= 获取完整地址]EN locale 你可以这样做:
public Address getFullAddress(Place place){
Address address;
Locale aLocale = new Locale.Builder().setLanguage("en").build();
Geocoder geocoder = new Geocoder(this, aLocale);
try
{
List<Address> addresses = geocoder.getFromLocation(place.getLatLng().latitude,place.getLatLng().longitude, 1);
address = addresses.get(0);
return address;
} catch (IOException e)
{
e.printStackTrace();
}
return null;
}
您可以在 initialize
调用中更改它:
Places.initialize(applicationContext, "API_KEY", Locale.US)
第三个参数是语言。
我正在使用 Google PlaceAutocomplete,因此用户可以 select 他的地址。
我的代码是:
mGoogleApiClient = new GoogleApiClient.Builder(MainActivity.this)
.addApi(Places.GEO_DATA_API)
.enableAutoManage(this, GOOGLE_API_CLIENT_ID, this)
.addConnectionCallbacks(this)
.build();
AutocompleteFilter typeFilter = new AutocompleteFilter.Builder()
.setCountry("IQ")
.build();
mAutocompleteTextView.setOnItemClickListener(mAutocompleteClickListener);
mPlaceArrayAdapter = new PlaceArrayAdapter(this, android.R.layout.simple_list_item_1,
BOUNDS_MOUNTAIN_VIEW, typeFilter);
mAutocompleteTextView.setAdapter(mPlaceArrayAdapter);
}
private AdapterView.OnItemClickListener mAutocompleteClickListener
= new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
final PlaceArrayAdapter.PlaceAutocomplete item = mPlaceArrayAdapter.getItem(position);
final String placeId = String.valueOf(item.placeId);
Log.i(TAG, "Selected: " + item.description);
PendingResult<PlaceBuffer> placeResult = Places.GeoDataApi
.getPlaceById(mGoogleApiClient, placeId);
placeResult.setResultCallback(mUpdatePlaceDetailsCallback);
Log.i(TAG, "Fetching details for ID: " + item.placeId);
}
};
private ResultCallback<PlaceBuffer> mUpdatePlaceDetailsCallback
= new ResultCallback<PlaceBuffer>() {
@Override
public void onResult(PlaceBuffer places) {
if (!places.getStatus().isSuccess()) {
Log.e(TAG, "Place query did not complete. Error: " +
places.getStatus().toString());
return;
}
// Selecting the first object buffer.
final Place place = places.get(0);
CharSequence attributions = places.getAttributions();
mNameView.setText(Html.fromHtml(place.getAddress() + ""));
}
};
我想要阿拉伯语的结果。经过一些研究,我发现它取决于用户系统语言,有没有办法让它只用阿拉伯语?
没有。您可以使用 web api,但是:
The language code, indicating in which language the results should be returned, if possible.
更多:https://developers.google.com/places/web-service/autocomplete
这是支持的语言列表https://developers.google.com/maps/faq#languagesupport,您可以从这里获取语言代码。
所以当你调用地方详情api时,你可以添加language
参数,这个参数是可选的,详情见下面url
https://developers.google.com/places/web-service/details
Places API returns 您使用短地址和 latlng 坐标放置 Place 对象,但要使用 [=13= 获取完整地址]EN locale 你可以这样做:
public Address getFullAddress(Place place){
Address address;
Locale aLocale = new Locale.Builder().setLanguage("en").build();
Geocoder geocoder = new Geocoder(this, aLocale);
try
{
List<Address> addresses = geocoder.getFromLocation(place.getLatLng().latitude,place.getLatLng().longitude, 1);
address = addresses.get(0);
return address;
} catch (IOException e)
{
e.printStackTrace();
}
return null;
}
您可以在 initialize
调用中更改它:
Places.initialize(applicationContext, "API_KEY", Locale.US)
第三个参数是语言。