【问题标题】:Google Place Picker Android StudioGoogle 地点选择器 Android Studio
【发布时间】:2017-03-30 05:35:06
【问题描述】:

有谁知道如何在 Android Studio 中实现 Google Place Picker API?试过教程,不成功。我想要一个显示位置的工作自动完成文本字段,当您单击该位置时,它将显示在 Google 地图片段中。

【问题讨论】:

    标签: java android google-maps google-places-api


    【解决方案1】:

    将依赖项添加到 yourbuild.gradle(将 <version-number> 替换为您想要的版本,例如,Gradle, Please):

    compile "com.google.android.gms:play-services-places:<version-number>"
    

    将您的密钥添加到您的AndroidManifest.xml

    <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/map_api_key"/>
    

    您的 Activity/Fragment 需要这些属性和方法:

    private final static int PLACE_PICKER_REQUEST = 999;
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        checkPermissionOnActivityResult(requestCode, resultCode, data);
    
        if (resultCode == RESULT_OK) {
            switch (requestCode){
            case PLACE_PICKER_REQUEST:
                Place place = PlacePicker.getPlace(this, data);
                String placeName = String.format("Place: %s", place.getName());
                double latitude = place.getLatLng().latitude;
                double longitude = place.getLatLng().longitude;
    
            }
        }
    }
    

    最后,这是打开PlacePicker的代码

    PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
    try {
         // for activty
         startActivityForResult(builder.build(this), PLACE_PICKER_REQUEST);
         // for fragment         
         //startActivityForResult(builder.build(getActivity()), PLACE_PICKER_REQUEST); 
    } catch (GooglePlayServicesRepairableException e) {
         e.printStackTrace();
    } catch (GooglePlayServicesNotAvailableException e) {
         e.printStackTrace();
    }
        
        
    

    【讨论】:

      【解决方案2】:

      在 Button clicklistner 或您要打开 PlacePicker 的地方调用此方法:

      private final static int PLACE_PICKER_REQUEST = 111;
       private void openPlacePicker() {
              PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
              try {
                  // for activty
                  startActivityForResult(builder.build(this), PLACE_PICKER_REQUEST);
                  // for fragment
                  //startActivityForResult(builder.build(getActivity()), PLACE_PICKER_REQUEST);
              } catch (GooglePlayServicesRepairableException e) {
                  e.printStackTrace();
              } catch (GooglePlayServicesNotAvailableException e) {
                  e.printStackTrace();
              }
          }
      

      并在ActivityResult上获取结果:

      @Override
          protected void onActivityResult(int requestCode, int resultCode, Intent data) {
              super.onActivityResult(requestCode, resultCode, data);
              if (resultCode == RESULT_OK) {
                  switch (requestCode) {
                      case PLACE_PICKER_REQUEST:
                          Place place = PlacePicker.getPlace(this, data);
                          String placeName = String.format("Place: %s", place.getName());
                          double latitude = place.getLatLng().latitude;
                          double longitude = place.getLatLng().longitude;
                          LatLng coordinate = new LatLng(latitude, longitude);
                          MarkerOptions markerOptions = new MarkerOptions();
                          markerOptions.position(coordinate);
                          markerOptions.title(placeName); //Here Total Address is address which you want to show on marker
                          mGoogleMap.clear();
                          markerOptions.icon(
                                  BitmapDescriptorFactory
                                          .defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
      
                          markerOptions.getPosition();
                          mCurrLocationMarker = mGoogleMap.addMarker(markerOptions);
                          mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng(coordinate));
                          mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(15));
      
                  }
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多