Как мне перерисовать только один указанный c маркер на React Native Maps? - PullRequest
0 голосов
/ 19 апреля 2020

Я делаю приложение с React Native Maps, и я пытался создать цветной код для маркеров. Я могу заставить его работать, пока мне не понадобится перерисовать один из них и изменить цвет.

Поток: Использовать вводит -> Правильно видит цветовой код -> Кликает по одному маркеру и голосует Y / N -> Если Y> N или N> Y, меняем цвет на зеленый или красный. У меня проблемы с последним шагом, поскольку повторная визуализация не происходит.

Мой код прямо сейчас:

            {this.props.data.map(marker => (
              <Marker
                key={marker.id}
                coordinate={marker.l.coords}
                pinColor={this.markerColor(marker.j)}
                onPress={() => {
                  this.setCard(marker.id);
                }}>
                <Callout
                  onPress={() => {
                    if (!this.state.showCard) {
                      this.setCard(marker.id);
                    }
                  }}>
                  <CustomCallout title={marker.t} />
                </Callout>
              </Marker>
            ))}

И функция для изменения цвета:

markerColor = jelly => {
    console.log(jelly);
    const date = new Date();
    let GMT_Date = new Date(date.toUTCString());

    let DB_Date;
    let noDate = false;

    if (jelly.last && jelly.last !== '' && jelly.last !== null) {
      DB_Date = new Date(jelly.last);
      GMT_Date.setHours(GMT_Date.getHours() + jelly.tz);
    } else {
      DB_Date = GMT_Date;
      noDate = true;
    }
    if (GMT_Date.getUTCDate() !== DB_Date.getUTCDate() || noDate) {
      return COLORS.lightBlue;
    } else if (GMT_Date.getUTCDate() === DB_Date.getUTCDate()) {
      if (jelly.no > jelly.yes) {
        return COLORS.green;
      } else if (jelly.no < jelly.yes) {
        return COLORS.red;
      } else if (jelly.yes == jelly.no) {
        return COLORS.lightBlue;
      }
    }
  };

Я заметил, что эта функция выполняется для ВСЕХ маркеров каждый раз, когда я нажимаю на один из них, но не меняет цвет ни на один из них.

Любое предложение о том, где может быть проблема ?

Заранее спасибо,

...