我今天收到了一封关于Google Place Picker的电子邮件.
"地方选择器已于2019年1月29日弃用.此功能将于2019年7月29日关闭,并且在该日期之后将不再可用.您必须安装兼容性库以在弃用期间继续使用地方选择器一旦弃用期结束,地点选择器将不再可用(包括兼容性库中的版本)."
他们刚刚提到它最终将不再起作用,但他们没有指定替代它.那么开发人员现在会用什么来让我们的用户选择地点呢?
google-maps google-maps-api-3 google-places-api gmsplacepicker
我正在使用一个地方选择器的意图来获得这个地方.现在我想以分开的形式保存地址,如国家,城市,密码,州.我如何从地方选择器的地址获得所有这些?
码:
public class NameOfBusinessFragment extends Fragment {
int PLACE_PICKER_REQUEST = 1;
int RESULT_OK = -1;
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
EditText category,location;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_name_of_business,
container, false);
location = (EditText)view.findViewById(R.id.location);
location.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
startActivityForResult(builder.build(getActivity()), PLACE_PICKER_REQUEST);
}
catch (GooglePlayServicesRepairableException e)
{
Toast.makeText(getActivity(),"ServiceRepaire Exception",Toast.LENGTH_SHORT).show();
}
catch (GooglePlayServicesNotAvailableException e)
{
Toast.makeText(getActivity(),"SeerviceNotAvailable Exception",Toast.LENGTH_SHORT).show();
}
}
});
return view;
}
public void onActivityResult(int requestCode, int …Run Code Online (Sandbox Code Playgroud) 最近,我的一些用户开始报告搜索图标已从PlacePicker UI小部件中消失.我能够将问题隔离到更新到Google Play Services 9.0.83.有没有人找到解决方法再次获取搜索图标?
更新:我还注意到更新到9.0.83后,PlacePicker.IntentBuilder类的setLatLngBounds()方法不再正常工作.它将地图定位在非洲沿海的0纬度0长的地方.只要我不调用setLatLngBounds(),PlacePicker就会以我当前的位置为中心.
更新:我有一个想法,但我需要每个人的帮助.根据来自本网站apkmirror.com的信息, 基于CPU和屏幕DPI,存在9.0.83的颠覆.在应用程序管理器中,选择Google Play服务,并且版本旁边的括号应该在括号中,我的是440-121911109,如果您遇到同样的问题,请在评论中发布.也许我们可以找到一个共同点.
在更新到Google Play Services 9.0.83之前

更新到Google Play Services 9.0.83后

static final int PPR = 41;
private GoogleApiClient googleApiClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.place_picker_activity);
googleApiClient = new GoogleApiClient
.Builder(this)
.addApi(Places.GEO_DATA_API)
.addApi(Places.PLACE_DETECTION_API)
.enableAutoManage(this, this)
.build();
Button btnLaunch = (Button) findViewById(R.id.buttonLaunch);
btnLaunch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (googleApiClient.isConnected()) {
try {
PlacePicker.IntentBuilder builder = …Run Code Online (Sandbox Code Playgroud) android google-places-api google-play-services gmsplacepicker
亲爱,
我想限制用户仅从GMSPlacepicker中选择地点,而不是让他们选择"选择此位置",只发送没有地名的Long&Lat.
所以我的问题很热,删除GMSPlacePicker对话框中的"选择此位置"按钮.
这就是我的意思..
这是代码写的..
@IBAction func LocationChooserPressed(_ sender: AnyObject) {
let center = CLLocationCoordinate2DMake((locationManager.location?.coordinate.latitude)!, (locationManager.location?.coordinate.longitude)!)
let northEast = CLLocationCoordinate2DMake(center.latitude + 0.001, center.longitude + 0.001)
let southWest = CLLocationCoordinate2DMake(center.latitude - 0.001, center.longitude - 0.001)
let viewport = GMSCoordinateBounds(coordinate: northEast, coordinate: southWest)
let config = GMSPlacePickerConfig(viewport: viewport)
placePicker = GMSPlacePicker(config: config)
placePicker?.pickPlace( callback: { (place: GMSPlace?, error: Error?) -> Void in
if let error = error {
print("Pick Place error: \(error.localizedDescription)")
return
}
if let place = place {
self.nameLabel.text = …Run Code Online (Sandbox Code Playgroud) 我用地方选择器做了一个应用程序.它打开我的(API 19)模拟器,和我的(Android 6.0)朋友手机,但在我的它只是打开一个黑色活动,关闭后(我的手机也是Android 6.0),有这个错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.google.android.gms.ui, PID: 19226
Theme: themes:{}
java.lang.RuntimeException: Unable to resume activity {com.google.android.gms/com.google.android.location.places.ui.placepicker.PlacePickerActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'void com.google.maps.api.android.lib6.impl.bq.o()' on a null object reference
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3169)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3200)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2541)
at android.app.ActivityThread.access$900(ActivityThread.java:159)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1353)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5504)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void com.google.maps.api.android.lib6.impl.bq.o()' on a null object reference
at com.google.maps.api.android.lib6.impl.da.b(:com.google.android.gms.DynamiteModulesB:96)
at com.google.android.gms.maps.internal.z.onTransact(:com.google.android.gms.DynamiteModulesB:73)
at android.os.Binder.transact(Binder.java:387)
at url.b(:com.google.android.gms:233)
at …Run Code Online (Sandbox Code Playgroud) 我正在尝试从Google地点选择器中获取城市名称。有什么方法可以使用地点选择器API获取城市名称。我知道我们不能简单地通过place.getCity();以下代码从API获取它。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == REQUEST_PLACE_PICKER){
if(resultCode==RESULT_OK){
Place place = PlacePicker.getPlace(data,this);
final CharSequence name = place.getName();
final CharSequence address = place.getAddress();
final CharSequence phone = place.getPhoneNumber();
final String placeId = place.getId();
final LatLng latLng = place.getLatLng();
if(place.getLocale() != null) {
String aname = place.getLocale().toString();
areaname.setText(aname);
}
location.setText(address);
gname.setText(name);
latlon.setText(String.valueOf(latLng));
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不希望城市中有任何空值。我读了Geocoder大部分将提供空值。
我已经集成了GMSPlacePickerConfig for iOS和地方选择器正在工作 - 所以我可以看到我周围的地方,也可以使用自动完成搜索.
我目前唯一的问题是地图,目前只显示没有实际地图数据的图标(街道等)
如何让地图显示更多细节?