MapView Карта не отображается во время выполнения - PullRequest
1 голос
/ 14 апреля 2020

Я пытаюсь добавить MapView во фрагмент, мое приложение работает нормально, но не может загрузить детали карты или геолокации. Пожалуйста, найдите детали в упомянутом скриншоте. Коды Google работают, но не загружают карты в MapView. Я также упомянул код ниже, который я пытаюсь выполнить, но получаю проблемы во время выполнения.

введите описание изображения здесь

NearbyFragment. java

public class NearbyFragment extends Fragment implements OnMapReadyCallback {

private MapView mMapView;

private static final String MAPVIEW_BUNDLE_KEY = "MapViewBundleKey";


View rootNearby;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    rootNearby = inflater.inflate(R.layout.fragment_nearby, container, false);
    // Inflate the layout for this fragment

    initGoogleMaps(savedInstanceState);

    return rootNearby;
}

private void initGoogleMaps(Bundle savedInstanceState) {
    Bundle mapViewBundle = null;
    if (savedInstanceState != null) {
        mapViewBundle = savedInstanceState.getBundle(MAPVIEW_BUNDLE_KEY);
    }
    mMapView = (MapView) rootNearby.findViewById(R.id.mapView_NearbyMap);
    mMapView.onCreate(mapViewBundle);

    mMapView.getMapAsync(this);

}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

    Bundle mapViewBundle = outState.getBundle(MAPVIEW_BUNDLE_KEY);
    if (mapViewBundle == null) {
        mapViewBundle = new Bundle();
        outState.putBundle(MAPVIEW_BUNDLE_KEY, mapViewBundle);
    }

    mMapView.onSaveInstanceState(mapViewBundle);
}

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

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

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

@Override
public void onMapReady(GoogleMap map) {
    map.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));

    if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED) {
        return;
    }
    map.setMyLocationEnabled(true);
}

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

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

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

1 Ответ

1 голос
/ 14 апреля 2020

Редактировать : добавлен более исчерпывающий ответ с всеми возможными проблемами для правильного рендеринга / отображения карты со ссылками и шагами, здесь есть хороший учебник тоже ... ниже приведены дополнительные шаги для устранения неполадок.

Выполните следующие действия:

  1. Проверьте манифест AndroidManifest. xml, часто это и макет могут быть проблемой для рендеринга карта. Это можно назвать что-то вроде google_maps_api.xml

enter image description here

В GoogleMaps для Android вам нужны оба ключа - отладка и выпуск.

Клавиша "debug" используется в других важных местах, также используется при разработке приложения в Eclipse. Тот же самый ключ отладки используется для разработки, тестирования и отладки .

Ключ отладки для подписи вашего приложения можно найти в файле userhome / .android / debug.keystore.

Чтобы создать SHA-1 для вашего хранилища ключей отладки, вы используете команду keytool из вашей установки JDK.

keytool -list -v -alias androiddebugkey \ -keystore <path_to_debug_keystore>debug.keystore \ -storepass android -keypass android

enter image description here

Прежде чем публиковать приложение на Market, измените android:debuggable="false" в AndroidManifest.xml и используйте Signed API key здесь .

Установите флажок для использования правильного отпечатка пальца, как # 3 выше keytool -list -keystore ~\.android\debug.keystore ...

Затем go для вашего пользователя dir. на windows и очистить этот старый файл до C:\Users\dev2.Tykt.org\.android и удалить debug.keystore и default.keysetTykt

Наконец, после этого перейдите к Eclipse run a clean build на вашем проекте и готово!

...