Причина, по которой компонент Marker никогда не вызывается, потому что this.state.haveUsersLocation
всегда ложно, и вы не устанавливаете его в значение true нигде в компоненте.Если вы хотите визуализировать компонент Marker только тогда, когда haveUsersLocation
имеет значение true, тогда вам нужно изменить haveUsersLocation
на true, чтобы визуализировать Marker, в противном случае удалите условие
. Вам нужно установить hasUsersLocation в значение true в componentWillMount, и Marker будетУспешная отрисовка
componentWillMount() {
fetch(
"https://bikewise.org:443/api/v2/locations/markers?proximity_square=10"
)
.then(response => response.json())
.then(response => this.setState({ haveUsersLocation: true, bikes: response.data.features }));
}
Чтобы заставить реагировать на повторную визуализацию данных GeoJSON, вам нужно передать некоторый ключ data-uniq компоненту.Для получения более подробной информации обратитесь к выпуску github
<GeoJSON key={`geojson-01`} addData={this.state.bikes} />
https://github.com/PaulLeCam/react-leaflet/issues/332#issuecomment-304228071
Также необходимо добавить уникальный ключ для маркера
{this.state.haveUsersLocation ? (
<Marker key={`marker-01`} position={position} icon={myIcon}>
<Popup>Your current location</Popup>
</Marker>
) : ""}