1. ホーム
  2. android

[解決済み] ViewPagerでGoogle Maps V2をFragmentに表示させる方法

2022-05-14 07:56:02

質問

Playストアと同様のタブレイアウトを行おうとしています。私は タブレイアウトを表示するようにしました。 を実装することができましたが グーグルマップv2 を実装することができません。もう何時間もインターネットを検索しましたが、それを行う方法のチュートリアルを見つけることができません。どなたか方法を教えていただけませんか?

どのように解決するのですか?

このコードを使用することで、ViewPagerやFragment、Activityの内部など、どこでもMapViewをセットアップすることができます。

Google for Mapsの最新のアップデートでは、MapViewのみがフラグメントにサポートされています。MapFragment & SupportMapFragment は私には機能しませんでした。

ファイル内の地図を表示するためのレイアウトを設定する location_fragment.xml :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <com.google.android.gms.maps.MapView
        android:id="@+id/mapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

次に、地図を表示するための Java クラスをファイル MapViewFragment.java :

public class MapViewFragment extends Fragment {

    MapView mMapView;
    private GoogleMap googleMap;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.location_fragment, container, false);

        mMapView = (MapView) rootView.findViewById(R.id.mapView);
        mMapView.onCreate(savedInstanceState);

        mMapView.onResume(); // needed to get the map to display immediately

        try {
            MapsInitializer.initialize(getActivity().getApplicationContext());
        } catch (Exception e) {
            e.printStackTrace();
        }

        mMapView.getMapAsync(new OnMapReadyCallback() {
            @Override
            public void onMapReady(GoogleMap mMap) {
                googleMap = mMap;

                // For showing a move to my location button
                googleMap.setMyLocationEnabled(true);

                // For dropping a marker at a point on the Map
                LatLng sydney = new LatLng(-34, 151);
                googleMap.addMarker(new MarkerOptions().position(sydney).title("Marker Title").snippet("Marker Description"));
            
                // For zooming automatically to the location of the marker
                CameraPosition cameraPosition = new CameraPosition.Builder().target(sydney).zoom(12).build();
                googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
            }
        });

        return rootView;
    }

    @Override
    public void onResume() {
        super.onResume();
        mMapView.onResume();
    }

    @Override
    public void onPause() {
        super.onPause();
        mMapView.onPause();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        mMapView.onDestroy();
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
        mMapView.onLowMemory();
    }
}

最後に、以下のサイトでアプリを登録し、アプリのAPI Keyを取得する必要があります。 Google クラウド コンソール . Native Android Appとしてアプリを登録します。