【发布时间】:2017-12-25 22:05:13
【问题描述】:
我已经按照google map api documentation实现了google map。
活动代码在这里
public class GoogleMapActivity extends AppCompatActivity implements OnMapReadyCallback {
private GoogleMap map;
double latitude,longitude;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_map_layout);
latitude = Double.parseDouble(getIntent().getExtras().getString("lat"));
longitude =Double.parseDouble(getIntent().getExtras().getString("lng"));
SupportMapFragment mapFragment =
(SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap map) {
map.setMyLocationEnabled(true);
CameraPosition cameraPosition = new CameraPosition.Builder().target(
new LatLng(latitude, longitude)).zoom(12).build();
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
Marker marker = map.addMarker(new MarkerOptions()
.position(new LatLng(latitude, longitude)));
map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
}
}
xml 布局
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.SupportMapFragment" />
Manifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-feature
android:name="android.hardware.location.gps"
android:required="false">
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
</uses-feature>
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<uses-feature
android:name="android.hardware.telephony"
android:required="false"></uses-feature>
<uses-library
android:name="com.google.android.maps"
android:required="false" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" >
</uses-feature>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 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" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<permission
android:name="pws.nactus.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="pws.nactus.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission
android:name="pws.nactus.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="android.permission.WAKE_LOCK">
</uses-permission>
<uses-permission android:name="pws.nactus.permission.C2D_MESSAGE" />
<!-- permission for Internet -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- Camera features - recommended -->
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<!-- Permission to vibrate - recommended, allows vibration feedback on scan -->
<uses-permission android:name="android.permission.VIBRATE" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.flash"
android:required="false" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:largeHeap="true"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:replace="android:icon">
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="AIzaS*****************uPTJkdnEn7dvdM" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity
android:name=".GoogleMapActivity"
android:screenOrientation="portrait"
/>
</application>
</manifest>
我们还为谷歌地图键添加了 sha-1
结果屏幕(地图)
控制台日志
07-20 14:52:29.315 8434-12620/pws.nactus V/FA: Activity paused, time: 786941945
07-20 14:52:29.318 8434-12620/pws.nactus D/FA: Logging event (FE): user_engagement(_e), Bundle[{firebase_event_origin(_o)=auto, engagement_time_msec(_et)=2996, firebase_screen_class(_sc)=TutorProfileActivity, firebase_screen_id(_si)=4288618532452179711}]
07-20 14:52:29.371 8434-8434/pws.nactus V/FA: onActivityCreated
07-20 14:52:29.429 8434-8434/pws.nactus I/Google Maps Android API: Google Play services package version: 11055436
07-20 14:52:29.480 8434-12730/pws.nactus E/Google Maps Android API: Failed to load map. Error contacting Google servers. This is probably an authentication issue (but could be due to network errors).
07-20 14:52:29.522 8434-12620/pws.nactus V/FA: Activity resumed, time: 786942133
07-20 14:52:29.524 8434-12620/pws.nactus D/FA: Logging event (FE): screen_view(_vs), Bundle[{firebase_event_origin(_o)=auto, firebase_previous_class(_pc)=TutorProfileActivity, firebase_previous_id(_pi)=4288618532452179711, firebase_screen_class(_sc)=GooleMapActivity, firebase_screen_id(_si)=4288618532452179713}]
build.gradle 文件中 Google play 服务版本为 11.0.2
编译“com.google.android.gms:play-services-maps:11.0.2”
似乎代码、开发者控制台设置和清单设置都很完美。但我们无法理解冲突从何而来。 如果有人也遇到此类问题,请帮助我们解决它。 很多 +1 将不胜感激。
此代码在单独的项目中工作,以显示具有相同开发者控制台设置的地图。
【问题讨论】:
-
您是否添加了单独的 API 密钥文件用于调试和发布?
-
可能是个愚蠢的问题,但对于
com.google.android.geo.API_KEY,你有你的实际密钥而不是占位符字符串“key”,对吧? -
@Iulian Popescu 我们对两者都使用相同的 api 密钥。
-
@Iulian Popescu 我们正在使用实际密钥代替“密钥”。
-
您是否在开发者控制台中启用了 google maps v2 API?
标签: java android google-maps google-maps-api-3 google-maps-android-api-2