React Native-MapView仅接受显式标记吗?

时间:2018-08-28 16:49:36

标签: javascript react-native expo react-native-maps

由于要在我的应用程序中动态填充自身的mapview,我真的很生气。首先,我尝试执行以下操作:

render()
{
const neoMarker = (lat, long, title, desc) => {
      <MapView.Marker
      coordinate={{latitude: lat,
          longitude: long,}}
      title={title}
      description={desc}
      onPress={() => this.setState({jvisible: true})}>
      <FAB
    small
    icon="add"
    onPress={() => this.setState({jvisible: true})}/>
      </MapView.Marker>
    }

    var noGuest = 5;
    var test = 37.43538;

    for(let i = 0; i < noGuest; i++){
      markerL.push(neoMarker(test, -122.4324, "New Job", "Testing Marker List"));
      test = test + 0.01000;
    }
}

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

这不起作用,并且地图没有标记,因此我尝试了与以前相同的操作,只是使用了索引,在这种情况下为markerL[0]。这也不起作用。因此,我最终尝试通过使用一些常规输入来调用neoMarker函数本身而不是{markerL}来填充make,并且mapview仍然不会渲染任何标记。

当标记被明确定义时,它们会出现,但这是不实际的 当前开发人员构建之外的方法。

因此,MapView是否明确不允许隐式标记列表?

PS:我正在使用Expo(https://expo.io/)在移动设备上测试和调试代码。

1 个答案:

答案 0 :(得分:1)

这样做的时候

someFunction = () => "abc"

您回到"abc"。但是当您这样做时:

someFunction = () => {
    "abc"
}

您回来了undefined

也可能存在另一个问题,但是乍一看,您似乎并没有从neoMarker返回任何内容。

const neoMarker = (lat, long, title, desc) => {
    <MapView.Marker

需要成为

const neoMarker = (lat, long, title, desc) => {
    return <MapView.Marker

演示:

const noReturn = () => {
    "abc";
}

const withReturn = () => {
    return "xyz";
}

console.log(noReturn(), withReturn());