【问题标题】:getProjection is not a function - google-maps-reactgetProjection 不是一个函数 - google-maps-react
【发布时间】:2018-04-02 17:57:41
【问题描述】:

我正在尝试使用 google-maps-react 绘制曲线。 为了做到这一点,我搜索并找到了这个问题“How to curve a Polyline in 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()}

导致未定义

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

【问题讨论】:

  • 您认为您可以将您的代码放在CodeSandbox 中以便我们看到吗?可能会更容易弄清楚。
  • 没有其余代码很难判断,但我的第一个猜测是:getProjection() 调用得太早了。这篇文章展示了你可以做什么stackoverflow.com/questions/17191664/…

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


【解决方案1】:

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

如果您查看本教程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(); 获取投影

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 2012-06-09
    • 2016-08-10
    • 2020-10-21
    • 1970-01-01
    • 2018-01-12
    • 2016-10-14
    相关资源
    最近更新 更多