javascript - 更改 google-maps-react 上选定多边形的颜色

标签 javascript reactjs google-maps google-maps-react

我正在使用google-maps-react并尝试在选择时更改重叠多边形的颜色。多边形也是 google-maps-react 的一部分。

多边形接受新的选定状态,setColor 函数甚至返回正确的颜色。它只是在 map 本身上没有改变。

代码如下:

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}
        />
      )
    }

最佳答案

看来是由google-maps-react库设计的,仅更改paths Prop causes Polygon to re-render .

可以考虑以下方法来更新多边形属性(例如fillColor):

1) 通过 ref attribute 获取 Google Maps Polygon 对象的实例:

 <Polygon
          ref={this.polygonRef}
          onClick={this.handleClick}
          paths={triangleCoords}
 />

2) 通过 Polygon.setOptions function 更新多边形属性:

handleClick = e =>{
   this.setPolygonOptions({fillColor: "green"});
}

哪里

setPolygonOptions = (options) => {
   this.polygonRef.current.polygon.setOptions(options);
};

Demo

更新

另一个选项是访问 Polygon 实例并修改其属性,如下所示。单击多边形对象后,其实例将通过 click 事件的第二参数传递:

handleClick = (props,polygon,e) => {
    polygon.setOptions({ fillColor: "#ff00ff"});
};

Demo 2

关于javascript - 更改 google-maps-react 上选定多边形的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53415627/

相关文章:

Javascript Angular Google map 自动完成 Api 不起作用

google-maps - 谷歌地图API绘制行驶路线,如果失败则绘制直线

javascript - .data() 在哪里存储值?

javascript - Angularjs指令调用 Controller 函数

reactjs - 将 React props 与自定义 props 连接起来

jquery - 将 jQuery 插件集成到 NextJS

javascript - 如何在 Javascript 代码中更改数据库值,但不允许用户在 Javascript 控制台中更改(或访问)数据库值?

javascript - jQuery 切换更改元素的宽度?我不想这样

reactjs - redux 调度完成后调用函数

javascript - 存储完整的谷歌地图路线