为什么我看不到地图

时间:2013-10-07 10:10:04

标签: android google-maps-android-api-2

我想运行演示Google地图,但它没有显示地图。这是我的代码。我检查了API密钥是否正确

package com.example.googlemaps;
import com.google.android.maps.MapActivity;
import android.os.Bundle;
import android.view.Menu;

public class MainActivity extends MapActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return true;
    }

} 

的Manifest.xml

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

    <uses-sdk android:minSdkVersion="8"/>
    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <uses-library android:name="com.google.android.maps" />
        <activity
            android:name="com.androidhive.googlemaps.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>

layout xml

<?xml version="1.0" encoding="utf-8"?>
<com.google.android.maps.MapView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mapView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:apiKey="@string/Api_key"
/>

2 个答案:

答案 0 :(得分:2)

这是获取地图的旧方法。谷歌现已更新。 使用

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

在你的xml布局中。

在清单文件中提供您的API密钥

<meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="YOUR-API-KEY" />

在你的申请标签中。

也不会延伸MapActivity。而是扩展正常Activity

然后在OnCreate中写下以下代码

int status = GooglePlayServicesUtil
                .isGooglePlayServicesAvailable(getBaseContext());

    if (status != ConnectionResult.SUCCESS) {
        // Google Play Services are not available

        int requestCode = 10;
        Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status, this,
                requestCode);
        dialog.show();

    } else {
        // Google Play Services are available

        // Getting reference to the SupportMapFragment
        SupportMapFragment fragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);

        // Getting Google Map
        myMap = fragment.getMap();

        // Enabling MyLocation in Google Map
        myMap.setMyLocationEnabled(true);

        // Getting LocationManager object from System Service
        // LOCATION_SERVICE
        LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

        // Creating a criteria object to retrieve provider
        Criteria criteria = new Criteria();

        // Getting the name of the best provider
        String provider = locationManager.getBestProvider(criteria, true);

        // Getting Current Location From GPS
        Location location = locationManager.getLastKnownLocation(provider);

        if (location != null) {
            onLocationChanged(location);
        }

        locationManager.requestLocationUpdates(provider, 20000, 0, this);
    }

还在OnResume上添加以下代码

int resultCode = GooglePlayServicesUtil
                .isGooglePlayServicesAvailable(getApplicationContext());

    if (resultCode == ConnectionResult.SUCCESS) {

    } else {
        GooglePlayServicesUtil.getErrorDialog(resultCode, this,
                RQS_GooglePlayServices);
    }

就是这样。 一切顺利!

答案 1 :(得分:1)

版本1 googlemaps正式删除。只需使用版本2并添加google-play-services libs.surely它将有助于获取googlemap。

  1. 公共类MainActivity扩展FragmentActivity {     protected void onCreate(Bundle savedInstanceState){     super.onCreate(savedInstanceState);     的setContentView(R.layout.activity_main);

    mGoogleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
        .getMap();    } }
    

    1. <uses-sdk
          android:minSdkVersion="8"
          android:targetSdkVersion="17" />
      
      <permission
          android:name="com.vogella.android.locationapi.maps.permission.MAPS_RECEIVE"
          android:protectionLevel="signature" />
      
      <uses-feature
          android:glEsVersion="0x00020000"
          android:required="true" />
      
      <uses-permission android:name="com.vogella.android.locationapi.maps.permission.MAPS_RECEIVE"
      

      /&GT;                         

      <application
          android:allowBackup="true"
          android:icon="@drawable/ic_launcher"
          android:label="@string/app_name"
          android:theme="@style/AppTheme" >
          <activity
              android:name="com.vogella.android.locationapi.maps.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>
      
          <meta-data
              android:name="com.google.android.maps.v2.API_KEY"
              android:value="AIzaSyDeYchyvOUsy_I68_RMtfsI5QVkqweIp9w" />
      </application>
      


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

        1. 请参阅此链接http://www.vogella.com/articles/AndroidGoogleMaps/article.html