1

我正在尝试使用 google-maps-react 绘制曲线。为了做到这一点,我搜索并找到了这个问题“如何在 react-google-maps 中弯曲折线? ”。在这个问题中,答案是指一个沙盒项目,其中完成了这样的实现。

我试图调整这段代码来为我工作,但我在获取地图的“投影”时遇到了问题,这是计算“点”所必需的,使用

const p1 = mapProjection.fromLatLngToPoint(pos1),

搜索了map组件的props和state,发现里面有“getProjection”方法:props -> google -> maps -> Map -> prototype -> getProjection。

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

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

这会导致错误“TypeError:this.props.google.maps.Map.getProjection is not a function”。

使用

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

导致未定义

我真的被困住了,我不知道如何解决这个问题。你们中的任何人都可以指出我正确的方向吗?非常感谢。

4

1 回答 1

0

该行this.props.google.maps.Map.getProjection()试图访问地图实例上的一个方法,该方法在 Map 类本身上静态可用。由于 getProjection 只能在 Map 类的对象上调用,因此您必须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();

于 2018-10-27T19:21:49.223 回答