我一直在尝试遵循这个https://github.com/airbnb/react-native-maps教程 我尝试了他们所说的一切,但在我的android studio模拟器上得到了一个空白屏幕。
我的代码:
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View
} from 'react-native';
import MapView from 'react-native-maps';
export default class ReactNativeMaps extends Component {
render() {
const { region } = this.props;
console.log(region);
return (
<View style ={styles.container}>
<MapView
style={styles.map}
region={{
latitude: 39.1329,
longitude: 84.5150,
latitudeDelta: 0.015,
longitudeDelta: 0.0121,
}}
>
</MapView>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
position: 'absolute',
top: 0,
left: 0,
right: 0,
bottom: 0,
justifyContent: 'flex-end',
alignItems: 'center',
},
map: {
position: 'absolute',
top: 0,
left: 0,
right: 0,
bottom: 0,
},
});
AppRegistry.registerComponent('ReactNativeMaps', () => ReactNativeMaps);
AndroidManifest.xml文件:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.reactnativemaps"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="22" />
<application
android:name=".MainApplication"
android:allowBackup="true"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:theme="@style/AppTheme">
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="AIzaSyC3injbScdjmMp7J5MM1GqBhSb-kulIF_8"/>
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>
</manifest>
答案 0 :(得分:4)
我有类似的问题,并且在解决之前花了很多时间。通常在真实设备上都可以,但无法在我的某些模拟器变体上显示Google Map。显然,程序代码还可以,所以问题是为什么?
到目前为止我所观察到的:
如果禁用硬件加速 - 所有功能都恢复正常工作。
如果使用纯android图片,cpu-arm(不加速x86,它速度较慢),但也有效。
如果你的x86_64 OS - macOS 10.13.2在我的情况下,使用x86_64版本的模拟器图像,而不是通用的x86!这是我的主要错误,不能让它工作!用x86_64变体替换我的模拟器图像,解决所有这些问题!
答案 1 :(得分:3)
答案 2 :(得分:1)
如果您使用真实设备的模拟器(例如Genymotion
),请确保您已安装Google Play support
。
检查设备上是否启用了互联网(GPS / Wifi /数据)。
不要忘记将宽度和高度添加到地图样式中。
const styles = StyleSheet.create({
container: {
position: 'absolute',
top: 0,
left: 0,
right: 0,
bottom: 0,
justifyContent: 'flex-end',
alignItems: 'center',
},
map: {
position: 'absolute',
top: 0,
left: 0,
right: 0,
bottom: 0,
width:200,
height:200
}
});
答案 3 :(得分:1)
我对同一个目标版本也有同样的问题,我通过更改google-api密钥来解决此问题。使用链接生成google api-key
https://developers.google.com/maps/documentation/android-api/signup#release-cert
并在添加
时将其添加到AndroidManifest.xml文件中答案 4 :(得分:0)
对于使用地图的空白屏幕,通常有两个主要原因:
答案 5 :(得分:0)
尝试通过模拟器的 Play 商店更新 Google 地图。新创建的模拟器将使用过时的 Google 地图版本。
如果您无法更新地图,请尝试更新 Google Play 服务。