【问题标题】:Android Emulator not showing Google Maps on ScreenAndroid 模拟器没有在屏幕上显示谷歌地图
【发布时间】:2017-05-22 09:25:57
【问题描述】:

我一直在尝试遵循这个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>

【问题讨论】:

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


    【解决方案1】:

    https://maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=13&size=600x300&maptype=roadmap &markers=color:blue%7Clabel:S%7C40.702147,-74.015794&markers=color:green%7Clabel:G%7C40.711614,-74.012318 &markers=color:red%7Clabel:C%7C40.718217,-73.998284 &key=YOUR_API_KEY

    使用此静态地图检查您的 api 密钥

    【讨论】:

      【解决方案2】:

      我有同样的问题。就我而言,API 密钥是正确的。只是因为我的模拟器 Wifi 没有正确连接。如果您对 wifi 连接有同样的问题, this 回答也可能对你有所帮助。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

          如果您使用的是真机模拟器(如Genymotion),请确保您已安装Google Play support

          检查您的设备是否启用了互联网(GPS/Wifi/数据)。

          别忘了在地图样式中添加 widthheight

          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
            }
          });
          

          【讨论】:

            【解决方案5】:

            对于相同的目标版本,我也遇到了同样的问题,我通过更改 google-api 密钥解决了这个问题。使用链接重新生成 google api 密钥

            https://developers.google.com/maps/documentation/android-api/signup#release-cert

            并在添加时将其添加到 AndroidManifest.xml 文件中

            【讨论】:

              【解决方案6】:
              • 转到 AVD
              • 选择您的设备
              • 进入设置
              • 仿真性能 -> 图形 - 设置为硬件 - GLES 2.0

              【讨论】:

                【解决方案7】:

                我遇到了类似的问题,花了很多时间才解决它。通常在真实设备上一切正常,但无法在我的一些模拟器变体上显示谷歌地图。显然,程序代码没问题,那么问题是为什么?

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

                1. 如果硬件加速被禁用 - 一切都恢复正常。

                2. 如果使用纯 android 映像,cpu-arm(未加速 x86,速度较慢),但也可以。

                3. 1234563这是我的主要错误,没有让它起作用!用 x86_64 变体替换我的模拟器图像,解决所有问题!

                【讨论】:

                  【解决方案8】:

                  使用地图时出现空白屏幕通常有两个主要原因:

                  • 当您使用错误的 Google Api Key 时。 (如果您导入 web api 密钥,它应该可以工作,请尝试)。并确保您启用了地图服务。
                  • Android Emulator 主要是在地图和谷歌服务方面太差了。我从来没有让我的模拟器运行地图。因此,请尝试使用实际设备。

                  【讨论】:

                  • 我遵循的示例要求我使用浏览器键来处理地图。我假设是 Goggle API 控制台凭据中的 HTTP API 密钥。它与 Web API 密钥不同还是相同。另外我没有物理设备,所以模拟器是我唯一的选择。
                  • @Yash 尝试将限制保持为无。正如我所说,对于模拟器问题,我从来没有在模拟器上运行过地图。尝试寻找让它发挥作用的方法。
                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2012-06-02
                  • 1970-01-01
                  • 2013-05-16
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多