Android模拟器未在屏幕上显示Google地图

时间:2017-01-07 19:35:07

标签: android google-maps react-native android-emulator react-native-maps

我一直在尝试遵循这个https://github.com/airbnb/react-native-maps教程  我尝试了他们所说的一切,但在我的android studio模拟器上得到了一个空白屏幕。

My Screenshot

我的代码:

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>

6 个答案:

答案 0 :(得分:4)

我有类似的问题,并且在解决之前花了很多时间。通常在真实设备上都可以,但无法在我的某些模拟器变体上显示Google Map。显然,程序代码还可以,所以问题是为什么?

到目前为止我所观察到的:

  1. 如果禁用硬件加速 - 所有功能都恢复正常工作。

  2. 如果使用纯android图片,cpu-arm(不加速x86,它速度较慢),但也有效。

  3. 如果你的x86_64 OS - macOS 10.13.2在我的情况下,使用x86_64版本的模拟器图像,而不是通用的x86!这是我的主要错误,不能让它工作!用x86_64变体替换我的模拟器图像,解决所有这些问题!

答案 1 :(得分:3)

  • 转到AVD
  • 选择您的设备
  • 进入设置
  • 模拟性能 - &gt;图形 - 设置为硬件 - GLES 2.0

答案 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文件中

enter image description here

答案 4 :(得分:0)

对于使用地图的空白屏幕,通常有两个主要原因:

  • 当您使用错误的Google Api Key时。 (如果你导入web api密钥它应该工作,试试)。并确保您启用了地图服务。
  • Android模拟器主要是与地图和谷歌服务合作太差。我从未让我的模拟器运行地图。所以试试一个实际的设备。

答案 5 :(得分:0)

尝试通过模拟器的 Play 商店更新 Google 地图。新创建的模拟器将使用过时的 Google 地图版本。

如果您无法更新地图,请尝试更新 Google Play 服务。