Google Maps V2 Android с API-ключом отображается пустым - PullRequest
0 голосов
/ 02 июня 2019

Я пытаюсь добавить вид карты в свое приложение, но на карте отображается пустой экран, я искал эту проблему и добавил все необходимые мне разрешения и ключ API, но все еще пустой.Это мой код для карты

<com.google.android.gms.maps.MapView
            android:id="@+id/map"
            android:layout_width="match_parent"
            android:apiKey="-----------------------------------"
            android:layout_height="200dp"
            android:layout_marginStart="20dp"
            android:layout_marginEnd="20dp"
            android:layout_marginBottom="20dp"/>

Это код Java в onCreateView (я использую фрагменты)

 mapview = (MapView) view.findViewById(R.id.map);
    mapview.onCreate(savedInstanceState);
    mapview.getMapAsync(this);

И

 @Override
public void onMapReady(GoogleMap googleMap) {
    GoogleMap map = googleMap;
    map.getUiSettings().setMyLocationButtonEnabled(false);
    if (ActivityCompat.checkSelfPermission(this.getContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this.getContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        return;
    }
    map.setMyLocationEnabled(true);
    GeoPoint location = user.getLocation();
    LatLng pos;
    if(location == null) pos = new LatLng(41.8919300, 12.5113300);
    else pos = new LatLng(location.getLatitude(), location.getLongitude());
    map.addMarker(new MarkerOptions().position(pos)
            .title("Ti trovi qui"));
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(pos,10f));
    mapview.onResume();

}

Иэто мой манифест

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.diy.yourself">

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
<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" />

<permission
    android:name="com.diy.yourself.permissions.MAPS_RECEIVE"
    android:protectionLevel="signature"/>
<uses-permission android:name="com.diy.yourself.permissions.MAPS_RECEIVE"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/Theme.AppCompat.DayNight.NoActionBar">
    <activity
        android:name="com.diy.yourself.SignInActivity"
        android:label="Sign In"></activity>
    <activity android:name="com.diy.yourself.MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="com.diy.yourself.SignUpActivity" />

    <meta-data
        android:name="preloaded_fonts"
        android:resource="@array/preloaded_fonts" />

    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="-----------------------------------------"/>

    <uses-library android:name="com.google.android.maps"/>

    <activity android:name="com.diy.yourself.ConditionsActivity" />
</application>

</manifest>

API Карт Google для Android включен, и я использовал ключ, автоматически сгенерированный Firebase, который работает для других API, отладчик не показывает никаких ошибок.

Кто-нибудь может помочь?Заранее спасибо 101

Ответы [ 2 ]

0 голосов
/ 02 июня 2019

Используйте этот код в XML

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MapsActivity" />

и этот код для определения

// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
0 голосов
/ 02 июня 2019

Вы должны добавить эту мету в свой манифест

<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="----------------------------"/>

Нет необходимости добавлять apiKey в xml. удалите эту строку из MapView

android:apiKey="-----------------------------------"

И добавьте эти строки в свой фрагмент

SupportMapFragment mapFragment = (SupportMapFragment) this.getChildFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
...