Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不为android加载react本机地图(空白地图)_Android_Google Maps_React Native_React Native Android - Fatal编程技术网

不为android加载react本机地图(空白地图)

不为android加载react本机地图(空白地图),android,google-maps,react-native,react-native-android,Android,Google Maps,React Native,React Native Android,我已经在这上面呆了很长时间了,现在我开始想也许react native maps不能在android emulator上工作,因为我发现所有的答案似乎都适用于IOS 我目前正在使用android emulator运行我的应用程序。下面是一个简单地图的代码 class MainMap extends Component { constructor() { super(); } render(){ return ( <View

我已经在这上面呆了很长时间了,现在我开始想也许react native maps不能在android emulator上工作,因为我发现所有的答案似乎都适用于IOS

我目前正在使用android emulator运行我的应用程序。下面是一个简单地图的代码

class MainMap extends Component {
    constructor() {
    super();
  }
    render(){
        return (
            <View style={styles.container}>
            <MapView
    initialRegion={{
      latitude: 37.78825,
      longitude: -122.4324,
      latitudeDelta: 0.0922,
      longitudeDelta: 0.0421,
    }}
  />
  </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,
    width:150,
    height:150,
    left: 0,
    right: 0,
    bottom: 0,
  },
});

module.exports = MainMap;
现在,当我运行
react native run android
时,应用程序似乎运行良好,没有错误消息。然而,该应用程序是空白的。
视图
容器可以正常加载,但其内容
地图视图
根本不加载。我所看到的只是一个空白屏幕

请注意,我的模拟器上也安装了Google Play服务和Google API

既然我没有收到任何错误消息,如何调试此问题?
react native maps
甚至可以在android emulator上工作吗

编辑

我已经在这上面呆了很长一段时间了,它让我无法从事我的这个项目。由于问题的性质很难调试,我将提供一个指向我的存储库的github链接,以防有人愿意复制问题并查看我的问题是什么

我只需要把地图载入就行了。代码看起来应该可以工作,但是映射没有加载


我将向任何能帮助我的人提供赏金。

MapView
以风格

包括

var { width, height } = Dimensions.get('window')
在渲染方法中

<View style={styles.container}>
        <MapView style = {styles.mapcontainer}
          showsUserLocation={true}
          showsMyLocationButton={false}
          zoomEnabled = {true}
          region={this.state.region} >
        </MapView>
</View>

您仅使用
map
样式创建
styles
变量,但未将该样式应用于MapView。 您需要添加以下行,该行将为地图视图指定样式

style={styles.map}
所以现在看起来

<View style={styles.container}>
    <MapView
        style={styles.map}
        initialRegion={{
            latitude: 37.78825,
            longitude: -122.4324,
            latitudeDelta: 0.0922,
            longitudeDelta: 0.0421,
       }}/>
</View>

还可以查看您遗漏的部分,以包括第二部分。
如果在添加样式后仍无法查看地图,则您的密钥存在问题。

激活“适用于Android的地图SDK”和“适用于iOS的地图SDK”

  • 转到谷歌云平台控制台

  • 使用顶部导航栏中的下拉菜单选择您的项目

  • 单击菜单并转到“API和服务”>“库”

  • 激活“Android版地图SDK”和“iOS版地图SDK”

  • 然后创建新的API密钥并将其添加到
    AndroidManifest.xml
    标记中的项目中:

  • 
    

    出于某些原因,重新生成API密钥并在中更新它:

    <meta-data
      android:name="com.google.android.geo.API_KEY"
      android:value="YOUR_ANDROID_KEY"/>
    
    
    

    帮我修好了。不确定两者的设置是否相同。。不再有谷歌图标的灰色屏幕

    尝试使用“container:{flex:1,justifyContent:'flex end',alignItems:'center',}的
    container
    样式。@ubatin我试过这个。似乎地图根本就没有加载…你有没有尝试在google api控制台中删除api密钥上的签名?我指的是包名和SHA1密钥。有时是调试密钥和释放密钥的问题。我只是问你是否考虑过这种方法?@ArpanSharma我的密钥不受限制,所以我在GoogleAPI控制台中得到的只是一个随机API键,然后我将它包含在我的
    meta
    标记中。所以我想我在用这个approach@Bolboa你试过换钥匙吗?@Bolboa:你试过这个解决方案吗?对不起,我一直忙于其他工作,但我今天会试试:)
    <View style={styles.container}>
        <MapView
            style={styles.map}
            initialRegion={{
                latitude: 37.78825,
                longitude: -122.4324,
                latitudeDelta: 0.0922,
                longitudeDelta: 0.0421,
           }}/>
    </View>
    
    <meta-data
      android:name="com.google.android.geo.API_KEY"
      android:value="YOUR_ANDROID_KEY"/>
    
    <meta-data
      android:name="com.google.android.geo.API_KEY"
      android:value="YOUR_ANDROID_KEY"/>