gpt4 book ai didi

java - Android 谷歌地图问题

转载 作者:太空宇宙 更新时间:2023-11-04 13:57:40 27 4
gpt4 key购买 nike

我目前正在构建一个 Android 应用程序。我了解基础知识,并且制作了许多应用程序,但现在我的项目更大了。我的应用程序包括许多带有 NavigationDrawer 的屏幕,这迫使我在我想要在应用程序上显示的每个类上使用 Fragment 类的扩展。这是我的问题 - 前段时间我创建了一个应用程序,一个简单的一页谷歌地图屏幕,它工作得很好。我想在我目前正在开发的应用程序上做同样的事情,但当我转到页面时,它给我的只是左下角屏幕上的谷歌日志,其余部分像灰色的 View 一样(没有显示 map )。我在很多地方搜索了解决方案,包括这个网站,我得到的答案是它可能与谷歌给我的API key 有关。我检查了这一点,我很确定它不是来自 key ,因为我将它应用在我的一页谷歌地图应用程序上,它工作得很好。我还拥有所需的所有权限,我检查了大约 6 次。所以我的结论是代码中存在某些内容阻止显示 map 。

这是我的代码:

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"));
}


}

}

我需要让我的 NavigationDrawer 的 Fragment 扩展能够工作,因此我创建了一个内部类并在那里应用了 map 的代码。

这是我的 list 中的内容:

     <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" />

这是我的 map 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 的一些概念。如果您已阅读所有内容,谢谢您的空闲时间!

最佳答案

检查 APK 签名。您必须在测试时分配调试 API key ,并在发布 APK 时分配发布 API key 。插入正确的 API key ,清理并重建您的项目。

我已经在那里一年了,我可以保证这就是问题所在。仔细检查您的 key ,看看它是调试 key 还是发布 key 。

另一件事要检查的是您的应用程序的包名称......如果您这样做了并且仍然看到灰色 View 而不是

,请告诉我

更新:

当我意识到您的问题仅存在于签名阶段时,我试图包含所有内容。

您只需获取调试 keystore SHA-1指纹并将其放入您的API key 对话框中。相信我,我写的任何内容都比 Google 文档更清晰、信息更丰富。

按照此 link 中的步骤操作获取调试证书SHA-1指纹

更新2:

为了获取 keystore 的 SHA-1,您可以检查此 thread .

关于java - Android 谷歌地图问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29651632/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com