当前位置: 首页 > 知识库问答 >
问题:

如何在React组件中加载google地图标记

长孙宜
2023-03-14

我发现这篇文章有类似的问题,但没有帮助。谷歌地图标记作为Reactjs组件

在我的数据库中,我存储了一些纬度和经度值。我在模型中检索这些值,以便为用户显示一些数据。我将这些值发送到一个简单的GoogleMaps组件,该组件是我根据本教程创建的https://tomchentw.github.io/react-google-maps/#introduction

组件从"道具"接收"模型",我得到这些值,并设置在两个变量,并尝试将它们发送到谷歌组件。

地图根本没有加载我发送的这些值。如果我不使用“parseFloat”,我会得到一个错误,指出值的格式不正确。

import React from 'react'
import {withGoogleMap,
     withScriptjs,
     GoogleMap,
     Marker } from 'react-google-maps';
import { compose, withProps } from 'recompose'

const MyMapComponent = withScriptjs(withGoogleMap((props) =>
 <GoogleMap
  defaultZoom={8}
  defaultCenter={{lat:parseFloat(props.lat),lng:parseFloat(props.long)}}
 >
  {props.isMarkerShown && <Marker position={{lat:-18.245630,lng:-45.222387}} 
 />}
 </GoogleMap>
))

export default class extends React.Component {
  constructor(props) {
  super(props)
  this.state = {
   isMarkerShown: false
 }
}
componentDidMount() {
 this.delayedShowMarker()
}
delayedShowMarker = () => {
 setTimeout(() => {
  this.setState({ isMarkerShown: true })
 }, 3000)
}
handleMarkerClick = () => {
  this.setState({ isMarkerShown: false })
  this.delayedShowMarker()
}
render() {
  let { model } = this.props;
  let lat = model.value.latitudeGeoreferencia
  let long = model.value.longitudeGeoreferencia
  return (
    <MyMapComponent
      isMarkerShown
      googleMapURL="https://maps.googleapis.com/maps/api/js?
      key=myKey.exp&libraries=geometry,drawing,places"
      loadingElement={<div style={{ height: `100%` }} />}
      containerElement={<div style={{ height: `400px` }} />}
      mapElement={<div style={{ height: `100%` }} />}
      lat
      long
    />
  )
 }
}

共有1个答案

云捷
2023-03-14

您没有将道具传递给MyMapComponent。如果您只输入属性名,它将接收true作为属性值。尝试:

<MyMapComponent
    isMarkerShown={this.state.isMarkerShown}
    googleMapURL="https://maps.googleapis.com/maps/api/js?
    key=myKey.exp&libraries=geometry,drawing,places"
    loadingElement={<div style={{ height: `100%` }} />}
    containerElement={<div style={{ height: `400px` }} />}
    mapElement={<div style={{ height: `100%` }} />}
    lat={lat}
    long={long}
/>
 类似资料:
  • 问题内容: 我有以下脚本文件 我遵循这个在React /JSX中添加脚本标签的方法,)但是对我来说不起作用… 如何在我的react组件中加载脚本? 问题答案: 经过大量的研发,终于找到了解决方案。 我曾经 在React组件中加载脚本

  • 问题内容: 在react项目中使用bootstrap时,运行dev环境工作正常。但是当我为软件包项目运行npm build时。显示引导字体错误。 我的Webpack配置 引导程序版本: 问题答案: 我遇到了一个解决方案: webpack.config.js 确保安装所有这些装载机 在此导入引导程序中后,您将文件另存为

  • 我有一堆标记,我可以在其中加载到谷歌地图上。我的问题是,相机不在标记之上。我可以将它集中在我所有的标记之上吗? 我正在使用以下代码添加标记: 我在堆栈上看了看,发现了这个问题,和我的问题一样: Android谷歌地图API V2中心标记 但它背后没有太多的背景,也不知道如何实现它。

  • 问题内容: 我的index.html 在该函数中,我打印到控制台以查看其运行时间。 当我加载页面时,经常会 在 react组件 之后 加载。 Login.js 在调试器中,您可以看到脚本正在组件之后加载 如果我刷新页面几次,则可以正常工作。但是有时它起作用,有时却不起作用。 为什么? 问题答案: 我认为在react中加载脚本的最好方法是使用容器组件。这是一个非常简单的组件,它允许您编写将脚本导入组

  • 问题内容: 我正在使用NPM包创建Google Map和几个标记。 问题: 我们如何将默认的Google Maps标记添加到地图? 从这个Github问题来看,似乎我们需要使用onGoogleApiLoaded函数访问内部Google Maps API 。 参考Google Maps JS API文档中的示例 ,我们可以使用以下代码来呈现标记,但是如何定义对的引用? 当前代码: 问题答案: 从自述

  • 问题内容: 应用崩溃时,我收到如下错误日志: 致命异常:com.facebook.react.modules.core.JavascriptException:onSelect index.android.bundle:20:7148 onPress index.android.bundle:20:2435 但这对我排除麻烦不是真的有帮助。如何启用源地图,以便能够找出问题所在? UPDATE 20