java谷歌地图不会出现
我正在做一个涉及“兴趣点”定位器的项目。我有一个生成的Google Maps API v2密钥,我已经向AndroidManifest添加了所有正确的权限(如下所示),所有内容都可以编译。。。除了地图本身!有一个标记可以显示你当前的位置和GPS坐标,但不显示地图,这一点毋庸置疑是必不可少的。此外,也没有运行时错误,除了LogCat在“有太多的输出要处理”时说。任何帮助都将不胜感激
安卓清单
package="com.example.kavin_000.travelapplication" >
<!-- suppress AndroidDomInspection -->
<uses-sdk
安卓:minSdkVersion="7"
安卓:targetSdkVersion="19" />
<permission
安卓:name="com.example.kavin_000.travelapplication.permission.MAPS_RECEIVE"
安卓:protectionLevel="signature" />
<uses-permission 安卓:name="com.example.kavin_000.travelapplication.permission.MAPS_RECEIVE" />
<uses-permission 安卓:name="安卓.permission.INTERNET" />
<uses-permission 安卓:name="安卓.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission 安卓:name="com.google.安卓.providers.gsf.permission.READ_GSERVICES" />
<uses-permission 安卓:name="安卓.permission.ACCESS_COARSE_LOCATION" />
<uses-permission 安卓:name="安卓.permission.ACCESS_FINE_LOCATION" />
<uses-permission 安卓:name="安卓.permission.ACCESS_NETWORK_STATE" />
<uses-feature
安卓:glEsVersion="0x00020000"
安卓:required="true"/>
<application
安卓:allowBackup="true"
安卓:icon="@drawable/nyit_icon"
安卓:label="@string/app_name"
安卓:theme="@style/AppTheme" >
<activity
安卓:name=".ow_main_page"
安卓:label="@string/app_name" >
</activity>
<activity
安卓:name=".manhattan_main_page"
安卓:label="@string/title_activity_manhattan_main_page" >
</activity>
<activity
安卓:name=".main_page"
安卓:label="Travel Application" >
<intent-filter>
<action 安卓:name="安卓.intent.action.MAIN" />
<category 安卓:name="安卓.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
安卓:name=".ow_campus_points_of_interest"
安卓:label="@string/title_activity_ow_campus_points_of_interest" >
</activity>
<activity
安卓:name=".manhattan_campus_points_of_interest"
安卓:label="@string/title_activity_manhattan_campus_points_of_interest" >
</activity>
<meta-data
安卓:name="com.google.安卓.gms.version"
安卓:value="@integer/google_play_services_version" />
<meta-data
安卓:name="com.google.安卓.maps.v2.API_KEY"
安卓:value="MY_KEY" />
</application>
</manifest>
布局XML文件
<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
xmlns:tools="http://schemas.安卓.com/tools"
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
安卓:paddingLeft="@dimen/activity_horizontal_margin"
安卓:paddingRight="@dimen/activity_horizontal_margin"
安卓:paddingTop="@dimen/activity_vertical_margin"
安卓:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".ow_main_page"
安卓:background="#ffffb502">
<fragment
安卓:id="@+id/googleMap"
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
class="com.google.安卓.gms.maps.SupportMapFragment"
安卓:layout_above="@+id/latlongLocation" />
<TextView
安卓:id="@+id/latlongLocation"
安卓:layout_width="fill_parent"
安卓:layout_height="wrap_content"
安卓:gravity="bottom"
安卓:layout_alignParentBottom="true"
安卓:background="#ff058fff"
安卓:paddingTop="5dp"
安卓:paddingBottom="5dp"
安卓:textColor="#ffffffff"
安卓:paddingLeft="5dp"
安卓:paddingRight="5dp" />
</RelativeLayout>
有问题的Java类
package com.example.kavin_000.travelapplication;
import 安卓.location.Criteria;
import 安卓.location.Location;
import 安卓.location.LocationListener;
import 安卓.location.LocationManager;
import 安卓.os.Bundle;
import 安卓.support.v4.app.FragmentActivity;
import 安卓.widget.TextView;
import com.google.安卓.gms.common.ConnectionResult;
import com.google.安卓.gms.common.GooglePlayServicesUtil;
import com.google.安卓.gms.maps.CameraUpdateFactory;
import com.google.安卓.gms.maps.GoogleMap;
import com.google.安卓.gms.maps.SupportMapFragment;
import com.google.安卓.gms.maps.model.LatLng;
import com.google.安卓.gms.maps.model.MarkerOptions;
public class ow_campus_points_of_interest extends FragmentActivity implements LocationListener {
GoogleMap googleMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//show error dialog if GooglePlayServices not available
if (!isGooglePlayServicesAvailable()) {
finish();
}
setContentView(R.layout.activity_ow_campus_points_of_interest);
SupportMapFragment supportMapFragment =
(SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.googleMap);
googleMap = supportMapFragment.getMap();
googleMap.setMyLocationEnabled(true);
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
String bestProvider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(bestProvider);
if (location != null) {
onLocationChanged(location);
}
locationManager.requestLocationUpdates(bestProvider, 20000, 0, this);
}
@Override
public void onLocationChanged(Location location) {
TextView locationTv = (TextView) findViewById(R.id.latlongLocation);
double latitude = location.getLatitude();
double longitude = location.getLongitude();
LatLng latLng = new LatLng(latitude, longitude);
googleMap.addMarker(new MarkerOptions().position(latLng));
googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
googleMap.animateCamera(CameraUpdateFactory.zoomTo(15));
locationTv.setText("Latitude:" + latitude + ", Longitude:" + longitude);
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
private boolean isGooglePlayServicesAvailable() {
int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (ConnectionResult.SUCCESS == status) {
return true;
} else {
GooglePlayServicesUtil.getErrorDialog(status, this, 0).show();
return false;
}
}
}
# 1 楼答案
听起来你在Google App Engine上的授权可能有问题。您是否确保使用调试中的SHA1指纹。密钥库而不是发布密钥库?此外,确保在SHA1指纹的末尾添加
;com.example.kavin_000.travelapplication
如果您尚未将SHA1指纹添加到授权应用程序列表中,这就是问题所在。可以通过查找
debug.keystore
文件(根据您的操作系统在谷歌上搜索)并运行以下命令来完成:keytool -list -v -keystore debug.keystore