2013-10-28 129 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" />