更改google-maps-react

时间:2018-11-21 15:41:32

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

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

多边形接受新的选定状态,并且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 个答案:

答案 0 :(得分:1)

它似乎是由google-maps-react库设计的 ,仅更改了paths个道具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事件的 second 参数传递:

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

Demo 2

答案 1 :(得分:0)

执行此操作...

  <Polygon
      paths={this.props.paths}
      onClick={() => this.handleClick()}
      options={{ strokeOpacity: 0.8, strokeColor: "#2A2A57", fillColor:"#000"}}
      {...this.props}
    />

您希望通过prop.options将样式选项传递给Google Maps API。