Как получить пользовательские свойства маркера с помощью метода getMarkers ()? - PullRequest
0 голосов
/ 10 января 2019

Я создаю приложение, использующее компонент реакции-google-maps, и создал собственное свойство маркера 'id'. Мне нужно получить доступ к кластеризованным маркерам по щелчку кластеризатора маркеров, но я не могу получить доступ к пользовательскому свойству, которое я создал с помощью метода getMarkers ().

{props.clusters.map(cluster => (
  <MarkerClusterer
    averageCenter
    enableRetinaIcons
    gridSize={60}
    onClick={(markerClusterer) => {
                const clickedMarkers = markerClusterer.getMarkers()
              }}
  >
    {cluster.markers.map(marker => (
      <Marker
        id={ marker.id}
        position={{ lat: marker.lat, lng: marker.lng }}
      />
    ))}
  </MarkerClusterer>
))}

Есть ли другой способ получить доступ к пользовательскому свойству маркера?

1 Ответ

0 голосов
/ 15 января 2019

Вы можете назначить пользовательские свойства, такие как id через MarkerProps.options prop , например:

<MarkerClusterer onClick={this.handleMarkerClustererClick}>
   {this.props.markers.map(marker => (
      <Marker
         options = {{marker.id}} 
         key={index}
         position={marker.ppos}
      />
    ))}
</MarkerClusterer>

Эти свойства будут доступны через экземпляры маркера при использовании метода MarkerClusterer.getMarkers:

handleMarkerClustererClick(markerClusterer, pos) {
  const clickedMarkers = markerClusterer.getMarkers();
  for( let m of clickedMarkers){
    console.log(m.id); 
  }
}

Вот демо

...