getProjection不是一个函数 - google-maps-react

时间:2018-04-02 17:57:42

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

我正在尝试使用google-maps-react绘制曲线。 为了做到这一点,我搜索并发现了这个问题“How to curve a Polyline in react-google-maps?”。在这个问题中,答案是指一个沙盒项目,其中完成了这样的实施。

我尝试调整此代码以适合我,但我在使用

计算“点”时需要对地图进行“投影”时遇到问题
const p1 = mapProjection.fromLatLngToPoint(pos1),

在搜索地图组件的道具和状态后,我发现“getProjection”方法在里面:props - >谷歌 - >地图 - >地图 - >原型 - > getProjection。

我尝试使用以下方式访问它:

mapProjection = {this.props.google.maps.Map.getProjection()}

,这会导致错误“TypeError:this.props.google.maps.Map.getProjection不是函数”。

使用

mapProjection = {this.props.google.maps.Map.prototype.getProjection()}

导致未定义

我真的被卡住了,我不知道怎么解决这个问题。你们有人能指出我正确的方向吗?非常感谢你。

1 个答案:

答案 0 :(得分:0)

this.props.google.maps.Map.getProjection()行正在尝试访问Map实例上的一种方法,该方法可以在Map类本身上静态使用。由于只能在Map类的对象上调用getProjection,因此必须在用getProjection()实例化的地图上调用new maps.Map(myDomNode, myMapConfig);

如果您看一下本教程How to Write a Google Maps React Component,您会注意到在Map组件的loadMap函数中创建了一个新的地图实例,并通过this.map = new maps.Map(node, mapConfig);将其附加到该组件上。

此时,this.map(地图实例)对Map组件上的任何方法都可用,您可以使用var projection = this.map.getProjection();来获得投影