【问题标题】:Problem with expo react native MapView on Android世博会在Android上反应原生MapView的问题
【发布时间】: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


【解决方案1】:

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

然而这很奇怪,因为在 expo 开发中问题不存在......仅在实时构建中。

【讨论】:

    【解决方案2】:

    尝试添加markerLat一个markerLon参数并替换这个:

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

    【讨论】:

    • 谢谢,但是没有用...问题是即使只是加载一个简单的地图,没有设置,空白地图,可以这么说...它不起作用.. .
    猜你喜欢
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 2021-12-11
    • 2021-03-01
    • 2020-05-07
    • 1970-01-01
    相关资源
    最近更新 更多