Изменение цвета выбранного полигона на google-maps-реагировать
Я использую Google-карты-реагировать и пытаюсь изменить цвет наложенного многоугольника, как он выбран. Полигоны также являются частью google-maps-реакции.
Полигоны принимают новое выбранное состояние, а функция setColor даже возвращает правильный цвет. Это просто не меняется на самой карте.
Код выглядит следующим образом:
setColor = (selected, index) => {
if (selected) {
return "blue" //Even when blue is returned, no color change is visible
} else {
return "red"
}
}
render() {
return (
<Polygon
paths={this.props.paths}
onClick={() => this.handleClick()}
strokeColor="#2A2A57"
strokeOpacity={0.8}
strokeWeight={2}
fillColor = {this.setColor(this.state.isSelected, this.state.index)}
fillOpacity={0.35}
{...this.props}
/>
)
}
2 ответа
Похоже, это google-maps-react
дизайн библиотеки, только изменение paths
реквизит причин Polygon
перерисовать.
Для обновления свойств полигона можно использовать следующий подход (например, fillColor
):
1) Получить экземпляр Google Maps Polygon
объект через ref
атрибут:
<Polygon
ref={this.polygonRef}
onClick={this.handleClick}
paths={triangleCoords}
/>
2) Обновите свойства полигона через Polygon.setOptions
функция:
handleClick = e =>{
this.setPolygonOptions({fillColor: "green"});
}
где
setPolygonOptions = (options) => {
this.polygonRef.current.polygon.setOptions(options);
};
Обновить
Другой вариант - получить доступ к экземпляру Polygon и изменить его свойства, как показано ниже. Как только объект многоугольника щелкается, его экземпляр передается через второй параметр click
событие:
handleClick = (props,polygon,e) => {
polygon.setOptions({ fillColor: "#ff00ff"});
};
Сделай это...
<Polygon
paths={this.props.paths}
onClick={() => this.handleClick()}
options={{ strokeOpacity: 0.8, strokeColor: "#2A2A57", fillColor:"#000"}}
{...this.props}
/>
Вы хотите передать параметры стилей в API Карт Google через prop.options.