web-dev-qa-db-ja.com

GoogleプレイスピッカーAndroid Studio

Android StudioでGooglePlace Picker APIを実装する方法を知っている人はいますか?チュートリアルを試しましたが、失敗しました。場所が表示され、場所をクリックすると表示される、機能するAutoCompleteテキストフィールドが必要です。 Googleマップフラグメントで。

6
Justin Luna

Yourbuild.gradleに依存関係を追加します。

compile "com.google.Android.gms:play-services-places:10.2.0"

キーをAndroidManifest.xmlに追加します:

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

アクティビティ/フラグメントには、次の属性とメソッドが必要です。

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();
}
18
Jd Prajapati

buttonクリックリスナーまたは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();
        }
    }

結果onActivityResultをフェッチします。

@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));

            }
        }
    }