В настоящее время я создаю приложение для Android. Я понимаю основы, и я сделал несколько приложений, но теперь мой проект больше. Мое приложение включает в себя несколько экранов с включенным NavigationDrawer, что заставляет меня использовать расширение класса Fragment для каждого класса, который я хочу отобразить в своем приложении. Вот моя проблема - некоторое время назад я создаю приложение простой одностраничный экран карт Google, и он работает отлично. Я хочу сделать то же самое в приложении, в котором я сейчас работаю, но все, что он дает мне, когда я иду на страницу, - это журнал google на нижнем левом экране, а остальное серый, как вид (карта не отображается) .I искал решение во многих местах, включая этот сайт, и я мог получить ответ, так как это может иметь отношение к моему API-ключу, предоставленному мне google.I ckecked, и я уверен, что это не из-за ключа, потому что Я применил его в своем приложении для одной страницы google map, и он работал отлично. У меня также есть все необходимые разрешения. Я проверил это как 6 раз. Итак, мой вывод: в коде есть что-то, что препятствует отображению карты.android google maps issues
Вот мой код:
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class guide extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// inflat and return the layout
View v = inflater.inflate(R.layout.test, container,
false);
return v;
}
class HoldFragmentPlace extends FragmentActivity{
private GoogleMap mMap;
public HoldFragmentPlace(){
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// inflat and return the layout
View v = inflater.inflate(R.layout.test, container,
false);
return v;
}
@Override
protected void onResume() {
super.onResume();
setUpMapIfNeeded();
}
private void setUpMapIfNeeded() {
// Do a null check to confirm that we have not already instantiated the map.
if (mMap == null) {
// Try to obtain the map from the SupportMapFragment.
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
.getMap();
// Check if we were successful in obtaining the map.
if (mMap != null) {
setUpMap();
}
}
}
private void setUpMap() {
mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
}
}
}
Мне нужно, что расширение Fragment для моего NavigationDrawer работать, поэтому я создать внутренний класс, и применяется код для карты там.
Вот что я имею в своем манифесте:
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/google_maps_key" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
А вот мой XML для карты:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" 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="fill_parent"
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_marginTop="-470dp" />
</LinearLayout>
Я также попробовал несколько других вариантов кода Java некоторые из них не включает внутренний класс, и результат все тот же. Я либо пропущу что-то очень фундаментальное, либо я недопонимаю какую-то концепцию об Android. Если вы прочитали все это, спасибо за потраченное время!
Я запустил приложение для отладки и получил эту ошибку: – user2961062
04-15 12: 42: 28.960 1961-2088/******************** E/API Android для Google Maps: сбой авторизации. Для правильной настройки карты см. Https://developers.google.com/maps/documentation/android/start. 04-15 12: 42: 28.960 1961-2088/**************** E/API для Google Maps Android: в консоли разработчика Google (https: //console.developers. google.com) Убедитесь, что включен «Google Maps Android API v2». Убедитесь, что существует следующий Android-ключ: Ключ API: ***************** Приложение для Android (; <имя_пакета>): ******* ************************* –
user2961062
, а также API Android API для Android: Не удалось загрузить карту. Ошибка при обращении к серверам Google. Вероятно, это проблема аутентификации (но может быть из-за сетевых ошибок). – user2961062