我在我的项目中使用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,但是地图还没有加载。
答案 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 key和Signup and API Keys文档,如果您在为应用添加API_KEY
时迷失了这些文档。
以下是链接内容的摘要:
获取Google Maps API密钥
复制
google_maps_api.xml
文件中提供的链接并将其粘贴到您的浏览器中。该链接将您带到Google Developers Console并通过网址参数提供信息,从而减少了您所需的手动输入。按照说明在控制台上创建新项目或选择现有项目。
为您的控制台项目创建一个Android API密钥。
- 醇>
复制生成的API密钥,返回Android Studio,然后将API密钥粘贴到&lt; string&gt;
google_maps_api.xml
文件中的元素。在Google Developers Console中创建API项目
- 转到Google Developers Console。
- 选择一个项目,或创建一个新项目。
- 在Google Developers Console中打开API库。如果出现提示,请选择项目或创建新项目。选择API部分中的Enabled APIs链接以查看所有已启用API的列表。确保API位于已启用的API列表中。如果尚未启用它,请从API列表中选择API,然后选择API的“启用API”按钮。您需要的唯一API是Google Maps Android API,但您也可以选择为同一项目启用其他API。
醇>获取Android API密钥
- 转到Google Developers Console。
- 在左侧边栏中,选择凭据。
- 如果您的项目还没有Android API密钥,请立即选择添加凭据&gt;创建一个。 API密钥&gt; Android密钥。
- 在出现的对话框中,输入应用的SHA-1指纹和包名称。例如:
醇>
BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75 com.example.android.mapexample
- 您的新Android API密钥会显示在项目的API密钥列表中。 API密钥是一串字符,如下所示:
醇>
AIzaSyBdVl-cTICSwYKrZ95SuvNw7dbMuDt1KG0
将API密钥添加到您的应用程序
- 醇>
在
AndroidManifest.xml
中,将以下元素添加为<application>
元素的子元素,方法是在结束</application>
标记之前插入:
<meta-data android:name="com.google.android.geo.API_KEY" android:value="YOUR_API_KEY"/>
在value属性中替换您的API密钥以获取YOUR_API_KEY。此元素将密钥com.google.android.geo.API_KEY设置为API密钥的值。
- 保存AndroidManifest.xml并重新构建您的应用程序。
醇>
答案 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));
}
}