本站已关停,现有内容仅作科研等非赢利用途使用。特此声明。
查看: 1966|回复: 0
打印 上一主题 下一主题

全新的自动完成小工具可帮助用户在移动应用中输入地点和地址

[复制链接]
跳转到指定楼层
1#
发表于 2016-3-7 16:58:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 truthrudy 于 2016-3-7 17:02 编辑

今天,我们要发布两种可帮助用户在您的应用中输入地点和地址时少打字的新方法。自动完成功能通过在用户键入地点时自动完成地点的名称和地址为用户提供协助。iOSAndroid 上的自动完成小工具让您只需少量代码即可轻松向您的应用添加自动完成功能。此外,我们还会将自动完成功能添加到地点选取器中。

新的自动完成小工具 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 问题跟踪器将其发送给我们。




ChinaGDG.com
回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表