安卓系统上expo-react原生MapView的问题



在项目的expo中使用MapView时遇到问题。在expo应用程序中,iOS和Android上的一切都可以,但当构建同一应用程序并将其发布到Android apk时,无论是在play store上还是在打开地图时,该应用程序都会崩溃并重新加载。

我正在使用:

  • 世博会37.0.0
  • react native expo sdk 37.0.1
  • react本地映射0.27.1

这是代码:

import { PROVIDER_GOOGLE } from 'expo';
import MapView, { Marker, Callout, CalloutSubview } from 'react-native-maps';
<MapView
ref={'map'}
onPress={() => this._mapPress()}
provider={PROVIDER_GOOGLE}
style={styles.mapView}
initialRegion={{
latitude: mapLat,
longitude: mapLon,
latitudeDelta: 0.0922,
longitudeDelta: 0.0421
}}
>
{markers.map((marker, i) => (
<Marker
key={`marker-${i}`}
coordinate={marker.latlng}
stopPropagation={true}
onPress={e => this._mapMarkerPress(marker)}
>
<Image
resizeMode='cover'
source={
JSON.stringify(this.state.selectedMarker) == JSON.stringify(marker)
? ACTIVE_PIN
: INACTIVE_PIN
}
style={styles.mapMarker}
/>
</Marker>
))}
</MapView>

起初,我认为标记数组或初始lat-long有问题,但删除部分代码后,我将MapView简化为:

<MapView
ref={'map'}
provider={PROVIDER_GOOGLE}
>
</MapView>

仍然不能在apk/live Android上工作,但在ios中,live工作得很好,显示了一个空地图。但在expo应用程序中,无论是ios还是android,无论有没有标记,一切都很好。

有人有这个问题吗?谢谢

发现问题并解决了它。来自谷歌云控制台的api密钥仅适用于web。我也为ios和android做了它,问题解决了。:(

然而,这很奇怪,因为在世博会的发展过程中,这个问题并不存在。。。只为生活而建。

首先添加

"config":{"谷歌地图":{"apiKey":"YOUR_ API"中;}},

在你的app.json上,在下面"android";。

然后你需要在谷歌开发者控制台中检查你的api,并确保

  1. 您选中了-应用程序限制
  2. 添加程序包名称(在您完成expo-buil:android之后,转到app.json并复制您的程序包。例如:"com.name.nameofapp&"(
  3. 添加您的SHA-1证书-为此,您需要运行expo凭据:manager(它看起来像AD:GR:55:SV:54:VS:45:TE:98(
  4. 在Api限制中,请查看Android版地图SDK

保存即可工作!

尝试添加markerLatmarkerLon参数并替换此参数:

initialRegion={{
latitude: mapLat,
longitude: mapLon,
latitudeDelta: 0.0922,
longitudeDelta: 0.0421
}}

这个:

initialRegion={{
latitude: mapLat,
longitude: mapLon,
latitudeDelta: 0.0922,
longitudeDelta: 0.0421
},
markerLat: Number(48.736279),  
markerLon: Number(19.146191)
}

相关内容

  • 没有找到相关文章

最新更新