谷歌地图API:当我尝试使用地图时,应用程序不断崩溃

问题描述 投票:0回答:1

所以我目前正在尝试开发一个需要谷歌地图API的应用程序。每当我尝试加载地图时,应用程序我将我的地图实现为片段类的子类:

package io.github.danisharsalan.meetupmarker;

import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.MapsInitializer;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;


public class MapActivityFragment extends Fragment {

MapView mMapView;
private GoogleMap googleMap;

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

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

    mMapView.onResume(); //needed to make map 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();
}


}'

这是标题为fragment_map_activity.xml的xml文件:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="io.github.danisharsalan.meetupmarker.MapActivityFragment">

<!-- TODO: Update blank fragment layout -->

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

</FrameLayout>

logcat给了我这个问题:

02-25 00:29:10.924 5473-5473 / io.github.danisharsalan.meetupmarker E / AndroidRuntime:FATAL EXCEPTION:main进程:io.github.danisharsalan.meetupmarker,PID:5473 java.lang.RuntimeException:未找到API密钥。在com.google.maps.api上的com.google.maps.api.android.lib6.drd.qb(:com.google.android.gms.DynamiteModulesB@11947480:40)中检查它是否位于AndroidManifest.xml的元素中.android.lib6.auth.ea(:com.google.android.gms.DynamiteModulesB@11947480:11)位于com.google.android.gms.maps.internal.CreatorImpl.a(:com.google.android.gms。 DynamiteModulesB @ 11947480:112)位于com.google.android.gms.maps.internal的com.google.android.gms.maps.internal.CreatorImpl.newMapViewDelegate(:com.google.android.gms.DynamiteModulesB@11947480:30) .h.onTransact(:com.google.android.gms.DynamiteModulesB@11947480:45)位于com.google.android.gms.internal.zzeu.zza的android.os.Binder.transact(Binder.java:499)(来自com.google.android上的com.google.android.gms.maps.internal.zzf.zza(未知来源)的com.google.android.gms.maps.MapView $ zzb.zza(未知来源)。来自com.google.android.gms.maps.MapView.onCreate(未知)的com.google.android.gms.dynamic.zza.onCreate(未知来源)的gms.dynamic.zza.zza(未知来源)来自android.support.v4.app.FragmentManagerImpl的android.support.v4.app.Fragment.performCreateView(Fragment.java:2354)的io.github.danisharsalan.meetupmarker.MapActivityFragment.onCreateView(MapActivityFragment.java:33) .moveToState(FragmentManager.java:1419)位于android.support.v.的移动设备上,在android.support.v4.的移动设备上,安装了android.support.v4.的移动设备。片段管理器,移植设备,移植设备。在android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager)的android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580)上的support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799)。 java:2367)在android.support.v4.的设置android.support.v4.的移动设备上的android.support.v4.的移动设备安全(FragmentManager.java:2229在android上的.FragmentManagerImpl $ 1.run(FragmentManager.java:700)。 os.Handler.handleCallback(Handler.java:751)位于android.app.A.运行时的android.O.上运行android.O.Roper.loop(Looper.java:154)的android.os.Handler.dispatchMessage(Handler.java:95) (ActivityThread.java:6077)位于com.android.internal.os的com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:866)的java.lang.reflect.Method.invoke(Native Method) .ZygoteInit.main(ZygoteInit.java:756)

如何修复api密钥问题?谢谢。

编辑:事实证明,我只是错过了我应该被引用的API密钥。我为创建低质量问题道歉

java android
1个回答
0
投票

看起来Google Maps API密钥未添加到AndroidManifest文件中。您可以从here获取Google Maps API密钥

在结束标记</application >之前插入API密钥,如下所示

 <meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="YOUR_API_KEY"/>
© www.soinside.com 2019 - 2024. All rights reserved.