【发布时间】:2016-04-09 18:29:51
【问题描述】:
我采用了一种非常简单的方法在我的安卓手机上显示地图片段。我从来没有机会看到地图片段。我总是得到一个带有谷歌水印的空白屏幕,空的。我已按照以下所有步骤操作:
- 我的 FragmentActivity 类
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.UiSettings;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class MapsActivity extends FragmentActivity {
MapView mapView;
GoogleMap map;
LatLng ll;
UiSettings mapSettings;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (GooglePlayServicesUtil.isGooglePlayServicesAvailable(this) != ConnectionResult.SUCCESS) {
//change to an alternative layout without fragment
setContentView(R.layout.activity_main);
}
else
setContentView(R.layout.activity_maps);
setUpMapIfNeeded();
}
private void setUpMapIfNeeded()
{
if (map == null)
{
map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
.getMap();
if (map != null)
{
setUpMap();
}
}
}
private void setUpMap() {
map.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
}
}
2.我的activity_maps.xml作为我的简单布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment" />
</LinearLayout>
3.我的AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.alpha.routefinder"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="com.alpha.routefinder.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<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.READ_PHONE_STATE" />
<permission
android:name="com.alpha.routefinder.MAPS_RECEIVE"
android:protectionLevel="signature"></permission>
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="19" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MapsActivity"
android:label="GPS route calculator" >
<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.gms.version"
android:value="8115000"/>
<meta-data android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyCR_A5-rG4THDJfvzUHck8EhCK358xMa7I"/>
<uses-library android:name="com.google.android.maps"/>
</application>
</manifest>
- 我的 debug.keystore 由我的 Java/bin 目录下的 keytool 生成
C:\Program Files\Java\jdk1.8.0_60\bin>keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -validi
ty 14000
5、获取指纹SHA1
C:\Program Files\Java\jdk1.8.0_60\bin>keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android
Certificate fingerprint (SHA1): 1D:FE:FA:5E:C9:74:CF:C1:AD:F9:4B:CC:25:8B:E9:A8:7F:04:64:9D
和
- 使用 SHA1 指纹导航创建 Android Api 密钥
html页面: https://console.developers.google.com/apis/credentials/key/0?project="我的项目"
我怎么了? 给你们所有的pleeeeeease给我一个提示!
【问题讨论】:
-
不是答案,而是根据这个例子仔细检查你的东西:github.com/kweaver00/Android-Samples/tree/master/Location/…
-
问题出在您的 API 密钥上。检查logcat输出,会有一个错误告诉你到底是什么问题。
-
@DanielNugent 我的 logcat 中出现的错误是
Authentication failed. Timeout while trying to contact the server这可能是空白片段的原因吗?
标签: java android google-maps android-fragments