Невозможно использовать функцию hideCallout из собственных карт реакции - PullRequest
0 голосов
/ 23 апреля 2020

В настоящее время я пытаюсь закрыть выноску, когда нажимаю кнопку X карты в моем приложении.

Мой код такой. ** функция закрытия карты **

  unsetCard = id => {
    this.setState({
      ...this.state,
      showCard: false,
    });

    this.markers.hideCallout();

    if (this.state.keyboard) {
      Keyboard.dismiss();
    }
  };

И это мой ** код представления карты, я использую RN Clustering **

<MapView
            // 
            mapRef={ref => (this.myMapRef = ref)}
            //
            onPress={this.unsetCard}>
            {this.props.data.map(marker => (
              <Marker
                key={marker.id}
                ref={ref => (this.markers = ref)}
               //
               }>
                <Callout
                  //
                  }}>
                  <CustomCallout title={marker.t} />
                </Callout>
              </Marker>
            ))}
          </MapView>

Наконец-то вызывается функция неустановленной карты в этом компоненте в том же файле:

            <CustomCardWithImage
              close={() => this.unsetCard(this.state.cardInfo.id)}
            />

Я был бы признателен, если бы кто-то сказал мне, как использовать ссылку на маркер, потому что, насколько я стараюсь, она не работает.

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

1 Ответ

0 голосов
/ 23 апреля 2020

После серьезного размышления о том, чтобы не продолжать работу с этим приложением, я взял перерыв и решил проблему. Вот как вы можете использовать показ или скрытие выноски, если вам интересно:

Инициализация маркеров

  constructor(props) {
    super();
    this.markers = [];
  }

Создание маркеров refs

<Marker
  key={marker.id}
  ref={ref => {
  this.markers[marker.id] = ref;
}}>

Позвоните, где необходимо

this.markers[id].hideCallout();

Я надеюсь, что кто-нибудь когда-нибудь найдет это полезным

...