React Native - MapView принимает только явные маркеры? - PullRequest
0 голосов
/ 28 августа 2018

Я действительно рву волосы, пытаясь сделать отображение карты в моем приложении динамически перенасыщенным. Сначала я попытался сделать следующее:

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]. Это тоже не сработало. Поэтому я, наконец, попытался заполнить make, вызвав саму функцию neoMarker вместо {markerL} с некоторым общим вводом, и представление карты все равно не отображало бы никаких маркеров.

Когда маркеры явно определены, они появляются, но это не практично метод вне текущей сборки dev.

Следовательно, MapView явно не допускает списки неявных маркеров?

PS: я использую Expo (https://expo.io/) для тестирования и отладки моего кода на мобильном телефоне.

1 Ответ

0 голосов
/ 28 августа 2018

Когда вы делаете

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());
...