2013-10-28 125 views
0

我一直在與一個名爲「Open GPS Tracker」的開源應用程序混淆,我一直無法讓谷歌地圖工作。我已經根據我的軟件包名稱和SHA1指紋獲取了我自己的API密鑰,但我無法讓地圖顯示除網格外的任何內容。清單權限和map.xml文件如下。任何建議將不勝感激。Android Google Maps API密鑰?

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="nl.sogeti.android.gpstracker" 
android:installLocation="auto" 
android:versionCode="85" 
android:versionName="0.5" > 

<uses-sdk 
    android:minSdkVersion="7" 
    android:targetSdkVersion="16" /> 

<supports-screens 
    android:largeScreens="true" 
    android:normalScreens="true" 
    android:smallScreens="true" /> 

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

<uses-feature 
    android:name="android.hardware.location.gps" 
    android:required="true" /> 

<application 
    android:allowClearUserData="true" 
    android:description="@string/app_name" 
    android:hardwareAccelerated="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <uses-library android:name="com.google.android.maps" /> 

} MAPS.XML

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:id="@+id/mapScreen" 
> 
<com.google.android.maps.MapView 
    android:id="@+id/myMapView" 

    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:enabled="true" 
    android:clickable="true" 
    android:apiKey="my key is here" 
    android:visibility="visible" /> 
<!-- Release   : 0bmdf4-ggC50QWBY1OgGRutQ9bIboIy11OczZbw --> 
<!-- Emulator  : 0bmdf4-ggC50QJGdjml6Turq0NJdMhKFQNdhkYA --> 

<org.osmdroid.views.MapView 
    android:id="@+id/myOsmMapView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    renderer="CLOUDMADESTANDARDTILES" 
    cloudmadeStyle="1" 
    android:visibility="gone" 
/> 

回答

1

有兩種地圖API爲Android:地圖V1和V2地圖。

地圖V1採用com.google.android.maps.MapView。它不會使用SHA1指紋來獲取API密鑰,因爲您無法獲取Maps V1的API密鑰。地圖V1已棄用。

地圖V2確實使用了API密鑰,並使用SHA1指紋,通過Google API控制檯獲取API密鑰。但是,那不使用com.google.android.maps.MapView,也不使用<uses-library android:name="com.google.android.maps" />

我建議你把從您的應用程序和move over completely to Maps V2所有的地圖V1的元素。

0

請參閱此處,只需使用清單文件中的密鑰更改api項並按照以下步驟操作: 並確保您的google_play_services_lib項目應該僅存在於項目工作空間中。

清單文件:

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

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

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

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.geeklabs.map.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="replace with your API key"/> 

    </application> 

</manifest> 

MainActivity.java:

package com.geeklabs.map; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 

public class MainActivity extends Activity { 

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

} 

activity_main.xml中:

<?xml version="1.0" encoding="utf-8"?> 
    <fragment xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/map" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:name="com.google.android.gms.maps.MapFragment"/> 

了之後這讓我知道。

0

由於版本1已過時,我建議嘗試版本2(V2),而且它在具有Jelly Bean(4.0及以上版本)的設備上工作。所以爲了在低於4.0的設備上運行,android支持庫是必需的。

擴展與FragmentActivity您的MainActivity自片段已在XML佈局被用來顯示地圖..

公共類MainActivity擴展FragmentActivity實現OnMapClickListener,LocationListener的

private GoogleMap myMap; 

    myMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();` 

在你的XML還補充一點:

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