【发布时间】:2020-05-04 08:48:00
【问题描述】:
在项目的 expo 中使用 MapView 时遇到问题。在 expo 应用程序中,iOS 和 Android 上的一切都正常,但是在构建相同的应用程序并将其发布到 Android apk 时,无论是在 Play 商店还是打开地图时的注释,应用程序都会崩溃并重新加载。
我正在使用:
- 37.0.0 世博会
- react-native expo sdk 37.0.1
- react-native-maps 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 都很好。
有人遇到过这个问题吗? 谢谢!
【问题讨论】:
-
您是否添加了 google-map-api 密钥?
-
是的,我添加了它。否则它将无法在 ios 或 android 上的 expo 中工作......对吗?您是否认为这可能是实时 api 密钥的问题?世博会不会发生这种情况?
-
你忘记导入 'PROVIDER_GOOGLE' =>> import MapView, { Marker, Callout, CalloutSubview, PROVIDER_GOOGLE } from 'react-native-maps'
-
导入了,忘记加在帖子代码里了。
-
另外,请记住,在 android 上的 expo 中,一切都很好。问题仅在于构建 apk 并将应用程序放入 Play 商店时。
标签: react-native google-maps expo android-mapview