谷歌地图可以在模拟器上工作,但不能在 React 本机 APP 的 android 设备上工作

Posted

技术标签:

【中文标题】谷歌地图可以在模拟器上工作,但不能在 React 本机 APP 的 android 设备上工作【英文标题】:Google map is Work on emulator But not on android device in React native APP 【发布时间】:2021-10-29 23:07:18 【问题描述】:

我正在开发一个使用 Google Map 的 react native expo 应用程序。模拟器上一切正常,地图工作并显示标记。但在真机上不显示,没有黑屏或异常!

我知道调试和发布 API 密钥,我确信这部分没有任何问题。该应用的调试版和发布版都在真机上进行了测试,但结果相同。

app.json

"android": 
      "package": "com.example.packegename",
      "config": 
        "googleMaps": 
          "apiKey": "API_KEY"
        
      ,
      "googleServicesFile": "./google-services.json"
    

ma​​pView.js

const  status  = await Location.requestForegroundPermissionsAsync();
 Location.installWebGeolocationPolyfill()
            navigator.geolocation.getCurrentPosition(
                (position) => 
                    this.setState(
                        userLat: position.coords.latitude,
                        userLong: position.coords.longitude,
                        userLatLoaded:true,

                        mapRegion: 
                            latitude: position.coords.latitude,
                            longitude: position.coords.longitude,
                            latitudeDelta: 0.1,
                            longitudeDelta: 0.1,
                        ,
                    );
                    this.fetchData();

                ,
                (error) => console.log('user location getting error - '+ error.message),
                 enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 ,
            );
            return Location.getCurrentPositionAsync(enableHighAccuracy: true);

         else 
            throw new Error('Location permission not granted');
        

【问题讨论】:

【参考方案1】:

这可能不是答案,但至少可以排除可能的原因,这也可以指导您采取一些最佳做法。 您根据您的 googleMaps.apiKey 在您的 Google Cloud Platform 中启用了哪些 API,并且您是否通过应用程序限制和 API 密钥限制限制了该 API 密钥?

在模拟器上,Google 地图使用“Maps javascript API”,但在真实设备上,您需要启用“Maps SDK for Android”或“Maps SDK for ios”。 因此,首先您需要确保已启用所有必需的 API,然后确保在您使用的 API 密钥中也启用了这些 API。

(明智的做法是限制 API 密钥,以免它们包含来自 Google 的所有 API,我建议不要公开分享它们以防止任何意外)

【讨论】:

以上是关于谷歌地图可以在模拟器上工作,但不能在 React 本机 APP 的 android 设备上工作的主要内容,如果未能解决你的问题,请参考以下文章

谷歌地图显示在模拟器上,但不在设备上

无法使用谷歌地图 API JS 在英特尔 xdk 中看到谷歌地图

谷歌地图不能在 HTC 上运行?

React Native Android 位置请求超时

React-Native-Camera 不能在 IOS 上工作但在 Android 上工作,IOS 应用程序崩溃

在 Android 模拟器上运行谷歌地图应用程序