其他分享
首页 > 其他分享> > android-应用显示网格屏幕而不是Google地图

android-应用显示网格屏幕而不是Google地图

作者:互联网

我正在尝试使基本的地图应用程序正常工作,但是,我仅获得了网格屏幕.

码:

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.Manifest.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>

我还尝试了使用从应用程序生成的密钥库生成的api编写此代码..但是没有用.

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

解决方法:

这是因为您混淆了两个版本的Google Maps.一方面,您正在使用MapView,它是API V1对象,另一方面,您已经为API V2生成了密钥,并使用了该版本的权限.

因此,由于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

标签:google-maps,map,android,google-maps-api-2
来源: https://codeday.me/bug/20191123/2065790.html