Я пытаюсь рисовать изогнутые линии с помощью google-maps-react. Для этого я поискал и нашел этот вопрос "Как изогнуть ломаную линию в react-google-maps?". В этом вопросе ответ относится к проекту песочницы, в котором такое внедрение выполняется.
Я попытался адаптировать этот код, чтобы он работал у меня, но у меня возникли проблемы с получением «проекции» карты, которая необходима для вычисления «точки», используя
const p1 = mapProjection.fromLatLngToPoint(pos1),
После поиска свойств и состояния компонента карты я обнаружил, что внутри находится метод "getProjection": props -> google -> maps -> Map -> prototype -> getProjection.
Я попытался получить к нему доступ, используя:
mapProjection = {this.props.google.maps.Map.getProjection()}
и это приводит к ошибке «TypeError: this.props.google.maps.Map.getProjection не является функцией».
С использованием
mapProjection = {this.props.google.maps.Map.prototype.getProjection()}
приводит к неопределенному
Я действительно застрял и понятия не имею, как это обойти. Может ли кто-нибудь из вас указать мне правильное направление? Большое спасибо.
Трудно судить без остальной части кода, но мое первое предположение: getProjection () вызывается слишком рано. Этот пост показывает, что вы можете сделать stackoverflow.com/questions/17191664/…



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Строка this.props.google.maps.Map.getProjection() пытается получить доступ к методу экземпляра карты как к методу, который статически доступен в самом классе карты. Поскольку getProjection можно вызвать только для объекта класса Map, вы должны вызвать getProjection() на карте, экземпляр которой вы создаете с помощью new maps.Map(myDomNode, myMapConfig);.
Если вы посмотрите этот учебник Как написать компонент Google Maps React, вы заметите, что новый экземпляр карты создается в функции loadMap компонента Map и прикрепляется к компоненту с помощью this.map = new maps.Map(node, mapConfig);.
В этот момент this.map (экземпляр карты) становится доступным для любого метода компонента Map, и вы можете получить проекцию с помощью var projection = this.map.getProjection();.
Как вы думаете, можно ли поместить свой код в CodeSandbox, чтобы мы могли его увидеть? Может облегчить понимание чего-то.