我有一个地图活动。我在地图中添加了一个自动填充搜索片段来搜索地点。我想仅在单击我的搜索按钮时显示自动完成片段。怎么做?我希望点击按钮内的给定代码。
placeAutoComplete = (PlaceAutocompleteFragment) getFragmentManager().findFragmentById(R.id.place_autocomplete);
placeAutoComplete.setOnPlaceSelectedListener(new PlaceSelectionListener() {
@Override
public void onPlaceSelected(Place place) {
addMarker(place);
//Log.d("Maps", "Place selected: " + place.getName());
}
@Override
public void onError(Status status) {
Log.d("Maps", "An error occurred: " + status);
}
});
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
public void addMarker(Place p){
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(p.getLatLng());
markerOptions.title(p.getName()+"");
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.mipmap.hosp));
mMap.addMarker(markerOptions);
mMap.moveCamera(CameraUpdateFactory.newLatLng(p.getLatLng()));
mMap.animateCamera(CameraUpdateFactory.zoomTo(13));
}
答案 0 :(得分:0)
正是因为您的情况,Google在文档中有一个部分:
如果您希望自己的应用使用不同的导航流程(例如,要从图标而不是搜索字段触发自动填充体验),您的应用可以使用意图启动自动填充功能。
在这种情况下,您不必实施回调,请查看this页面并查找Option 2: Use an intent to launch the autocomplete activity
部分。
基本上,您有两个步骤,如文档中所述:
1)使用PlaceAutocomplete.IntentBuilder创建一个intent,传递所需的PlaceAutocomplete模式。意图必须调用startActivityForResult,传入一个标识您意图的请求代码。
2)覆盖onActivityResult回调以接收所选位置。
此代码会进入您的onClickListener
:
try {
Intent intent = new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN).build(this);
startActivityForResult(intent, PLACE_AUTOCOMPLETE_REQUEST_CODE);
} catch (GooglePlayServicesRepairableException e) {
// TODO: Handle the error.
} catch (GooglePlayServicesNotAvailableException e) {
// TODO: Handle the error.
}
然后你覆盖onActivityResult
,只需查看文档页面,就可以很好地解释所有内容。