如何在android studio中设置map api键?

时间:2015-12-24 06:06:40

标签: android google-maps android-studio

我在我的项目中使用Google地图,地图正在打开但未加载。我是android studio的新手,我不知道如何在android studio中设置map键,
请帮帮我。

清单文件是

     <?xml version="1.0" encoding="utf-8"?>

    

<uses-permission android:name="com.truiton.supportmapfragment.permission.MAPS_RECEIVE" />
<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" />
<!--
 The following two permissions are not required to use
 Google Maps Android API v2, but are recommended.
-->
<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/logo"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme" >


    <activity
        android:name=".activities.SplashScreen"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".activities.MainActivity" />
    <activity
        android:name=".activities.ForCustomer"
        android:label="@string/title_activity_for_customer"
        android:theme="@style/AppTheme.NoActionBar" >
    </activity>
    <activity
        android:name=".activities.CustomerSignIn"
        android:label="@string/title_activity_customer_sign_in"
        android:theme="@style/AppTheme.NoActionBar" >
    </activity>
    <activity
        android:name=".activities.Home"
        android:label="@string/title_activity_home"
        android:theme="@style/AppTheme.NoActionBar" >
    </activity>
    <activity
        android:name=".activities.RegisterCustomer"
        android:label="@string/title_activity_register_customer"
        android:theme="@style/AppTheme.NoActionBar" >
    </activity>
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

    <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="I_REMOVED"/>
</application>

使用像这样的xml文件

<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <RelativeLayout
        android:id="@+id/header"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:background="#1B8AB7">

        <ImageView
            android:id="@+id/menu"
            android:layout_width="40dp"
            android:layout_height="25dp"
            android:src="@drawable/menu"
            android:layout_centerVertical="true"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="10dp"/>

        <RelativeLayout

            android:id="@+id/realtivelayout_search_bar"

            android:layout_width="250dp"
       android:layout_centerHorizontal="true"
            android:layout_height="30dp"
            android:layout_centerVertical="true"

            android:background="@drawable/saerchbarbackground"

            >

            <ImageView
                android:id="@+id/btn_searchbar"
                android:layout_width="35dp"
                android:layout_height="match_parent"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:src="@drawable/search_btn"
                android:layout_marginRight="5dp"/>
            <EditText
                android:layout_marginLeft="5dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                android:id="@+id/edittext_searchbar"
                android:layout_toLeftOf="@+id/btn_searchbar"
                android:hint=" search for location"
                android:singleLine="true"
                android:textColor="#000000"
                android:background="#00000000"
                />

        </RelativeLayout>

    </RelativeLayout>

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

        />

</RelativeLayout>

我像你说的那样使用了map api,但是地图还没有加载。

4 个答案:

答案 0 :(得分:5)

试试这个

   [40]   message:
   [41]     type: string
   [42]     required: false

<强>的build.gradle

<meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="@string/google_maps_api_key"/>

答案 1 :(得分:4)

您需要在AndroidManifest.xml文件中设置地图密钥。在<application> </application>标记之间。

      <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="Your key" />

请参阅Google map Integration in Android以便更好地理解。请注意为清单文件中的地图集成添加所有必需的权限。

要创建google api密钥,您需要使用sha1密钥。如果你还没有创建它。您可以关注SHA1 key in Android studio

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

在清单中的<application>标记之前添加此内容。

答案 2 :(得分:2)

以下是Get a Google Maps API keySignup and API Keys文档,如果您在为应用添加API_KEY时迷失了这些文档。

以下是链接内容的摘要:

  

获取Google Maps API密钥

     
      
  1. 复制google_maps_api.xml文件中提供的链接并将其粘贴到您的浏览器中。该链接将您带到Google Developers Console并通过网址参数提供信息,从而减少了您所需的手动输入。

  2.   
  3. 按照说明在控制台上创建新项目或选择现有项目。

  4.   
  5. 为您的控制台项目创建一个Android API密钥。

  6.   
  7. 复制生成的API密钥,返回Android Studio,然后将API密钥粘贴到&lt; string&gt; google_maps_api.xml文件中的元素。

  8.         

    在Google Developers Console中创建API项目

         
        
    1. 转到Google Developers Console。
    2.   
    3. 选择一个项目,或创建一个新项目。
    4.   
    5. 在Google Developers Console中打开API库。如果出现提示,请选择项目或创建新项目。选择API部分中的Enabled APIs链接以查看所有已启用API的列表。确保API位于已启用的API列表中。如果尚未启用它,请从API列表中选择API,然后选择API的“启用API”按钮。您需要的唯一API是Google Maps Android API,但您也可以选择为同一项目启用其他API。
    6.         

      获取Android API密钥

           
          
      1. 转到Google Developers Console。
      2.   
      3. 在左侧边栏中,选择凭据。
      4.   
      5. 如果您的项目还没有Android API密钥,请立即选择添加凭据&gt;创建一个。 API密钥&gt; Android密钥。
      6.   
      7. 在出现的对话框中,输入应用的SHA-1指纹和包名称。例如:
      8.         

        BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75 com.example.android.mapexample

             
            
        1. 您的新Android API密钥会显示在项目的API密钥列表中。 API密钥是一串字符,如下所示:
        2.         

          AIzaSyBdVl-cTICSwYKrZ95SuvNw7dbMuDt1KG0

               

          将API密钥添加到您的应用程序

               
              
          1. AndroidManifest.xml中,将以下元素添加为<application>元素的子元素,方法是在结束</application>标记之前插入:

                 

            <meta-data android:name="com.google.android.geo.API_KEY" android:value="YOUR_API_KEY"/>

          2.         

            在value属性中替换您的API密钥以获取YOUR_API_KEY。此元素将密钥com.google.android.geo.API_KEY设置为API密钥的值。

                 
                
            1. 保存AndroidManifest.xml并重新构建您的应用程序。
            2.   

答案 3 :(得分:0)

检查以下代码。 在xml文件中添加地图片段。它正在运行代码。

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/map"
            android:name="com.google.android.gms.maps.SupportMapFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

活动

  public class MapView extends AppCompatActivity implements OnMapReadyCallback{
  Googlemap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map_view);//your layout view
    SupportMapFragment mapFragment = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap mMap) {
    LatLng sydney = new LatLng(-34, 151);
    mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
    mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
}