【问题标题】:I am receiving an error on Map view android java我在 Map view android java 上收到一个错误
【发布时间】:2021-01-10 16:47:31
【问题描述】:

希望你们都平安

在项目的这一部分中,我正在按照此代码创建一个显示特定位置的地图视图,但是我遇到了错误。

这就是我的xml文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background"
    tools:context=".activities.PreRegister">

    <fragment
        android:id="@+id/map"
        class="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.039" />

    
</androidx.constraintlayout.widget.ConstraintLayout>

Thie 是我用来显示位置的片段

package com.example.toimon.fragments;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;


import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import com.example.toimon.R;
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.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

public class FragmentBeforeBrowse extends Fragment implements OnMapReadyCallback{
    private Button sensor_btn, man_btn;
    GoogleMap googleMap;
    MapFragment mapFragment;

    public static FragmentBeforeBrowse fragmentBeforeBrowse() {
        FragmentBeforeBrowse fragment = new FragmentBeforeBrowse();
        return fragment;
    }


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_before_browse, null, false);


        man_btn =view.findViewById(R.id.man_btn);
        sensor_btn =view.findViewById(R.id.sensor_btn);

        mapFragment = (MapFragment) getActivity().getFragmentManager().findFragmentById(R.id.map);

        mapFragment.getMapAsync(this);

 return view;

    }

    @Override
    public void onMapReady(GoogleMap gMap) {
        googleMap = gMap;
        googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        try {
            googleMap.setMyLocationEnabled(true);
        } catch (SecurityException se) {

        }

        //Edit the following as per you needs
        googleMap.setTrafficEnabled(true);
        googleMap.setIndoorEnabled(true);
        googleMap.setBuildingsEnabled(true);
        googleMap.getUiSettings().setZoomControlsEnabled(true);
        //

        LatLng placeLocation = new LatLng(3.5703335945608576, 103.42567603992448); //Make them global
        Marker placeMarker = googleMap.addMarker(new MarkerOptions().position(placeLocation)
                .title("UMP Faculty of Computer"));
        googleMap.moveCamera(CameraUpdateFactory.newLatLng(placeLocation));
        googleMap.animateCamera(CameraUpdateFactory.zoomTo(10), 1000, null);
    }




}

最后这是错误

 android.view.InflateException: Binary XML file line #19: Binary XML file line #19: Error inflating class fragment
    Caused by: android.view.InflateException: Binary XML file line #19: Error inflating class fragment
    Caused by: java.lang.RuntimeException: API key not found.  Check that <meta-data android:name="com.google.android.geo.API_KEY" android:value="your API key"/> is in the <application> element of AndroidManifest.xml
        at com.google.maps.api.android.lib6.drd.p.b(:com.google.android.gms.dynamite_mapsdynamite@204714067@20.47.14 (100408-0):6)
        at com.google.maps.api.android.lib6.auth.f.i(:com.google.android.gms.dynamite_mapsdynamite@204714067@20.47.14 (100408-0):1)
        at com.google.android.gms.maps.internal.CreatorImpl.c(:com.google.android.gms.dynamite_mapsdynamite@204714067@20.47.14 (100408-0):24)
        at com.google.android.gms.maps.internal.CreatorImpl.newMapFragmentDelegate(:com.google.android.gms.dynamite_mapsdynamite@204714067@20.47.14 (100408-0):2)
        at com.google.android.gms.maps.internal.g.aX(:com.google.android.gms.dynamite_mapsdynamite@204714067@20.47.14 (100408-0):22)
        at ds.onTransact(:com.google.android.gms.dynamite_mapsdynamite@204714067@20.47.14 (100408-0):4)
        at android.os.Binder.transact(Binder.java:675)
        at com.google.android.gms.internal.maps.zza.zza(Unknown Source:10)
        at com.google.android.gms.maps.internal.zzf.zzc(Unknown Source:5)
        at com.google.android.gms.maps.MapFragment$zzb.zzd(Unknown Source:12)
        at com.google.android.gms.maps.MapFragment$zzb.createDelegate(Unknown Source:6)
        at com.google.android.gms.dynamic.DeferredLifecycleHelper.zaa(com.google.android.gms:play-services-base@@17.1.0:18)
        at com.google.android.gms.dynamic.DeferredLifecycleHelper.onInflate(com.google.android.gms:play-services-base@@17.1.0:20)
        at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source:21)
        at android.app.Fragment.onInflate(Fragment.java:1443)
        at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:3559)
        at android.app.FragmentController.onCreateView(FragmentController.java:103)
        at android.app.Activity.onCreateView(Activity.java:6445)
        at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:337)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:780)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at com.example.toimon.fragments.FragmentBeforeBrowse.onCreateView(FragmentBeforeBrowse.java:38)
        at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698)
        at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:292)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1227)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1382)
        at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1460)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1525)
        at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:447)
        at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2316)
        at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2103)
        at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2058)
        at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1960)
        at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:418)
        at android.os.Handler.handleCallback(Handler.java:873)

发生错误的行是这个

    View view = inflater.inflate(R.layout.fragment_before_browse, null, false);

感谢评论,我对清单文件和 build.gradle 进行了更改,但是我仍然得到一个空白地图,其中没有任何显示

【问题讨论】:

    标签: java android google-maps


    【解决方案1】:

    您尚未在清单文件中分配您的 API 密钥

    【讨论】:

    • 哦,我明白了,你能告诉我地图的 api 密钥吗?它应该像这样正确
    • 您需要在谷歌开发者平台中激活它,然后您就可以在 [这里] (developers.google.com/places/android-sdk/get-api-key) 获得您的 API 密钥
    • 谢谢您,但是地图目前显示为空,没有更多错误。你知道为什么吗?
    • 使用 com.google.android.gms.maps.MapView 而不是 fragment 来加载地图。
    • 查看 Google Maps API 页面上的实现教程并尝试一下。但这是另一回事,如果您的问题已解决,请标记正确答案并发布新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多