2017-04-10 416 views
0

我想在我的應用程序中實現谷歌地圖。我添加了Google地圖活動並創建了一個密鑰。我沒有在其他地方的代碼中改變任何東西。我應該工作,但事實並非如此。谷歌地圖不顯示Android

MapsActivity

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

private GoogleMap mMap; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_maps); 
    // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 
} 


/** 
* Manipulates the map once available. 
* This callback is triggered when the map is ready to be used. 
* This is where we can add markers or lines, add listeners or move the camera. In this case, 
* we just add a marker near Sydney, Australia. 
* If Google Play services is not installed on the device, the user will be prompted to install 
* it inside the SupportMapFragment. This method will only be triggered once the user has 
* installed Google Play services and returned to the app. 
*/ 
@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 

    // Add a marker in Sydney and move the camera 
    LatLng sydney = new LatLng(-34, 151); 
    mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 
} 

}

activity_maps.xml

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:map="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/map" 
android:name="com.google.android.gms.maps.SupportMapFragment" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.example.kevin.map.MapsActivity" /> 
+0

你加你的鑰匙在清單> –

回答

1

要與谷歌地圖工作,你必須:

  1. 添加邏輯的片段或活動。
  2. 將地圖片段元素添加到圖層。
  3. 獲取API密鑰(您可能需要將密鑰與您的調試版本和應用程序的簽名版本相關聯,每個人都將擁有不同的簽名,但兩者都可以共享相同的密鑰)。
  4. 配置應用程序清單。在這裏,要使用谷歌地圖,您需要:互聯網訪問,Open GL規範,如果地圖將存儲在本地,您需要訪問設備存儲,因爲地圖庫作爲Google Play服務的一部分包含在內,因此您需要也配置這一點。

在清單層次:

<!-- Location if you will use this --> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

<!-- Maps API needs OpenGL ES 2.0. --> 
<uses-feature 
    android:glEsVersion="0x00020000" 
    android:required="true" /> 
<uses-permission android:name="com.example.permission.MAPS_RECEIVE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

在清單中的應用程序級別:

​​
0
  1. 檢查你的谷歌API密鑰您輸入的正確與否和鍵啓用與否
  2. 你是否允許位置訪問權限,如果沒有,那麼去在移動應用程序設置和點擊權限選項,並允許位置訪問權限,然後運行您的代碼,它將運行
1

除了其他職位,您可以參考此thread。原因可能是所使用的API密鑰是由錯誤的密鑰庫創建的。在Google API控制檯中創建API密鑰時,您需要確保使用調試密鑰庫。基於此link,當使用GoogleMaps for Android時,您需要兩個鍵 - 調試和發佈。 「調試」鍵是一個誤導性的術語。開發應用程序時也使用此密鑰。所以本質上,使用調試密鑰進行開發,測試和調試。當您準備將應用程序推向市場時,請在AndroidManifest.xml中設置android:debuggable =「false」並使用簽名的API密鑰。

0

確保你已經添加在發行文件夾映射關鍵(app> src> release> res> values> google_map_api.xml)。

1

即使您按照官方文檔中的步驟操作,或者您已完成Android Studio的步驟,但仍無法看到地圖,請按照以下步驟操作,以確定它是否存在API密鑰問題:

'谷歌地圖' 在你的logcat
  1. 過濾器。
  2. 你會看到一個錯誤信息,其中包含了應該存在,因爲它是API密鑰
  3. 去谷歌雲端控制檯在正確的包名& SHA鍵 - > API - > Credentails和交叉驗證這兩個以上,如有需要請更正。 10-15分鐘的API密鑰變化
  4. 等待被反映
+0

這爲我工作。 – moyheen

+0

@moyheen,很高興知道我可以幫助別人...... –