Вот те вещи, которые вам нужно проверить:
Убедитесь, что у вас есть оба из них (у меня были только метаданные ключа API)
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
2. У вас есть фрагмент в xml, подобный этому, с атрибутом class, который является правильным, как показано ниже
<fragment
android:id="@+id/google_map_fragment"
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
В моем случае фрагмент карты является дочерним, внутри другого фрагмента.
Этот родительский фрагмент, по-видимому, не должен быть MapFragment или SupportMapFragment.После изменения его с SupportMapFragment на Fragment карта показала себя отлично.
public class ParentFragment extends Fragment {
Теперь, если вы используете фрагмент, попробуйте это, -> вместо получения карты в onCreateView, я получил ее в onViewCreatedкак это:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.rewards_google_map_area);
if (mapFragment != null) {
LocationManager locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
if (locationManager != null && mapFragment.getMap() != null) {
googleMap=mapFragment.getMap();
//after this you do whatever you want with the map
}
}
}