|
本帖最后由 truthrudy 于 2016-3-7 17:02 编辑
今天,我们要发布两种可帮助用户在您的应用中输入地点和地址时少打字的新方法。自动完成功能通过在用户键入地点时自动完成地点的名称和地址为用户提供协助。iOS 和Android 上的自动完成小工具让您只需少量代码即可轻松向您的应用添加自动完成功能。此外,我们还会将自动完成功能添加到地点选取器中。
新的自动完成小工具 UI 具有两个不同风格:叠层和全屏。
在 Android 上,您可以 Fragment 形式添加自动完成小工具,并添加一个事件侦听器来检索回应用中自动完成的地点参考。或者,您可以使用 Intent 调用自动完成小工具。
在 XML 布局文件中为您的 Activity 添加一个 Fragment:
<fragment
android:id="@+id/place_autocomplete_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment"
/>
在您的 Activity 的 onCreate() 方法中添加一个事件侦听器:
//
PlaceAutocompleteFragment fragment = (PlaceAutocompleteFragment)
getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);
fragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
@Override
public void onPlaceSelected(Place place) { // Handle the selected Place
}
@Override
public void onError(Status status) { // Handle the error
}
创建一个 Intent 来调用自动完成小工具:
try {
Intent intent =
new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN)
.build(this);
startActivityForResult(intent, PLACE_AUTOCOMPLETE_REQUEST_CODE);
} catch (GooglePlayServicesRepairableException e) {
GooglePlayServicesUtil
.getErrorDialog(e.getConnectionStatusCode(), getActivity(), 0);
} catch (GooglePlayServicesNotAvailableException e) {
// Handle the exception
}
在 iOS (Objective-C) 上,您可以实现自动完成的代理来响应地点选择:
@interface MyViewController ()
@end
@implementation ViewController
.
.
.
- (IBAction)onLaunchClickedid)sender {
// Present the Autocomplete view controller when the button is pressed.
GMSAutocompleteViewController *acController = [[GMSAutocompleteViewController alloc] init];
acController.delegate = self;
[self presentViewController:acController animated:YES completion:nil];
}
- (void)viewControllerGMSAutocompleteViewController *)viewController
didAutocompleteWithPlaceGMSPlace *)place {
// The user has selected a place.
[self dismissViewControllerAnimated:YES completion:nil];
}
- (void)viewControllerGMSAutocompleteViewController *)viewController
didAutocompleteWithErrorNSError *)error {
[self dismissViewControllerAnimated:YES completion:nil];
}
// User pressed cancel button.
- (void)wasCancelledGMSAutocompleteViewController *)viewController {
[self dismissViewControllerAnimated:YES completion:nil];
}
@end
以及在 Swift 中:
iimport UIKitimport GoogleMaps
class MyViewController: UIViewController {
@IBAction func onLaunchClicked(sender: AnyObject) {
let acController = GMSAutocompleteViewController()
acController.delegate = self
self.presentViewController(acController, animated: true, completion: nil)
}
}
extension MyViewController: GMSAutocompleteViewControllerDelegate {
func viewController(viewController: GMSAutocompleteViewController!, didAutocompleteWithPlace place: GMSPlace!) {
// The user has selected a place.
self.dismissViewControllerAnimated(true, completion: nil)
}
func viewController(viewController: GMSAutocompleteViewController!, didAutocompleteWithError error: NSError!) {
self.dismissViewControllerAnimated(true, completion: nil)
}
func wasCancelled(viewController: GMSAutocompleteViewController!) {
self.dismissViewControllerAnimated(true, completion: nil)
}
}
我们还将自动完成功能添加到了地点选取器中,后者是一个 UI 小工具,可帮助用户传递他们的当前位置,例如地图上的地点、地址或位置。这样,可以更轻松地通过开始键入地点名称或地址来选取具体的地点。如果您的应用已经使用地点选取器,那么它将自动获取自动完成功能,无需您执行任何操作。
要开始了解此功能,请查阅文档和代码示例。如有任何问题或任何改进意见,您可以随时通过 Stack Overflow 或 Google Maps API 问题跟踪器将其发送给我们。
|
|