gpt4 book ai didi

android - 应用程序显示网格屏幕而不是谷歌地图

转载 作者:太空狗 更新时间:2023-10-29 12:47:06 24 4
gpt4 key购买 nike

我试图让一个基本的 map 应用程序工作,但我只得到网格屏幕。

代码:

1.ActivityMain.java

import android.os.Bundle;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
public class MainActivity extends MapActivity {
MapView mapView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mapView = (MapView) findViewById(R.id.map_view);

}

@Override
protected boolean isRouteDisplayed() {
return false;
}
}

2.activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:enabled="true"
android:apiKey="[api_key]" />

</RelativeLayout>

3. list .xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.vevolet.maps"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<permission
android:name="com.vevolet.maps.permission.MAPS_RECEIVE"
android:protectionLevel="signature" >
</permission>

<uses-permission android:name="com.vevolet.maps.permission.MAPS_RECEIVE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >

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

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

<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

我还尝试使用从应用程序生成的 keystore 生成的 api 生成此代码..但它没有工作。

请告诉我问题是什么。谢谢

最佳答案

这是因为您混淆了 Google map 的两个 API 版本。一方面,您正在使用 MapView,这是一个 API V1 对象,另一方面,您已经为 API V2 生成 key 并使用权限对于这个版本。

因此,因为 API V1 已弃用且不再可用,并且因为您正在实现 Google Maps API V2,您应该做的是:

1. 删除此权限,因为它是 API V1 权限:

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

2. 在您的 xml 中替换此代码:

 <com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:enabled="true"
android:apiKey="[api_key]" />

这个:

<fragment
android:name="com.google.android.gms.maps.SupportMapFragment"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent" />

3. 从您的 java 代码中删除这一行:

mapView = (MapView) findViewById(R.id.map_view); 

您可以查看我在 Google Maps API V2 上编写的指南,以全面了解其实现:

Google Maps API V2

关于android - 应用程序显示网格屏幕而不是谷歌地图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16944232/

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