Google Maps Javascript API,标记和折线的问题不在React.js应用程序上一起显示

学习者SamuelX

我很确定状态和setState的东西是正确的,所以这是我的代码。我在这里所做的就是为地图键分配了功能this.initMap()要详细查看:

class Radar extends Component{
    constructor(props){
        super(props)
        //initialize methods here
        this.googleMap = React.createRef()

        //define states here
        this.state = {
            cityname:this.props.datasource.name,
            cityCoordinates:[this.props.datasource.coord.lon, this.props.datasource.coord.lat],
            winddirection:this.props.datasource.wind.deg,
            cityPool:[],
            borderLine:[]
        }
}


initMap(){
    return new window.google.maps.Map(this.googleMap.current,{
        zoom: 7.5,
        center:{ lat: this.state.cityCoordinates[1], lng:this.state.cityCoordinates[0] },
      disableDefaultUI: true,
    })
}

targetedCityMarker(){
    new window.google.maps.Marker({
        position: { lat: this.state.cityCoordinates[1], lng:this.state.cityCoordinates[0] },
        map:this.initMap()
    })
}

cityPoolPolyLine(){
    let citypool_coordinates=[]
    this.state.cityPool.map((i)=>{
        citypool_coordinates.push(i.location)
        return citypool_coordinates
    })

    console.log(this.state.borderLine)   
    console.log(citypool_coordinates)    
    new window.google.maps.Polyline({
        path: this.state.borderLine,
        geodesic: true,
        strokeColor: "#2AA181",
        strokeOpacity: 1.0,
        strokeWeight: 2,
        map:this.initMap()
      });
}

componentDidMount(){
    axios.get('http://localhost:5000/weather/radar').then((res)=>{
        console.log(res.data)
        this.setState({
            cityPool:res.data
        })
    })

    axios.get('http://localhost:5000/weather/radar_2').then((res)=>{
        this.setState({
            borderLine:res.data
        })
    })

    const MapCode = document.createElement('script')
    MapCode.src =`https://maps.googleapis.com/maps/api/js?key=${process.env.REACT_APP_GOOGLE_MAPS_API_KEY}&libraries=&v=weekly`
    window.document.body.appendChild(MapCode)
    

    MapCode.addEventListener('load', ()=>{
        this.initMap()
        this.targetedCityMarker()
        setTimeout(()=>{
            this.cityPoolPolyLine()
        },4000)
    })
}
    
    render(){
        return(
            <div className='radar-page'>
                <h1>Weather Radar</h1>
                <p>City Name: {this.state.cityname}</p>
                <p>City Coordinates:Lon: {this.state.cityCoordinates[0]}, Lat: {this.state.cityCoordinates[1]}</p>
                <p>Wind Direction: {this.state.winddirection}˚ </p>
                <p>Selected Cities: * Write a query, setup the range, greater or less than the chosen city's coordinates *</p>
                <div id="google-map" ref={this.googleMap} style={{ width: '500px', height: '400px' }} />
            </div>
        )
    }
}

export default Radar

我使用this.initMap()正确吗?我的直觉告诉我这句话,或者我对OOP的某些困惑正在引起一些麻烦。因此,一旦我运行,它将首先显示没有折线的标记,然后标记消失,但折线显示出来。

勘误表

发生这种情况是因为您多次实例化了地图。每次调用时,this.initMap()您都会创建一个新的地图实例,因此您应该做的是只调用一次此方法(可能在构造函数中),将其分配给某个变量,然后在引用Marker()Polyline()方法中引用该映射时使用该变量

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在移动/本地应用程序上找不到404的Google Maps Javascript API V3

来自分类Dev

使用React.js在Google Maps Javascript API中添加标记的问题

来自分类Dev

与标记Google Maps javascript一起移动圆

来自分类Dev

Google Maps标记未显示javascript

来自分类Dev

Google 地图 Javascript API v3 自定义标记未显示在 ionic 应用程序上

来自分类Dev

Javascript Google Maps API-标记未显示

来自分类Dev

在点击的Google Maps JavaScript API上放置标记

来自分类Dev

如何在Aurelia JavaScript应用程序中加载Google Maps JavaScript API?

来自分类Dev

Google Maps API的JavaScript框架

来自分类Dev

流星Google Maps JavaScript API

来自分类Dev

Google Maps / JavaScript-显示某些标记-MySQL后端

来自分类Dev

使用标记和折线Google Maps android

来自分类Dev

Google Maps JavaScript API在浏览器中有效,但在设备上的Cordova应用程序中无效

来自分类Dev

Google Maps Javascript API与Google Maps Embed API

来自分类Dev

AngularJs和Google Maps问题:不显示标记?

来自分类Dev

Google Maps Javascript API以小方块显示地图

来自分类Dev

在 Google Maps Javascript API 中显示多个方向

来自分类Dev

在 Google Maps JavaScript API 中绘制多条折线

来自分类Dev

使用JavaScript API在Google Maps上绘制“点”

来自分类Dev

使用ColdFusion CFC和SQL Server获取地址的Flex应用程序中的Google Maps JavaScript API

来自分类Dev

ReactJS和Google Maps-显示标记

来自分类Dev

使用Google Maps API显示标记

来自分类Dev

Google Maps API-标记未显示

来自分类Dev

Google Maps API:未显示标记

来自分类Dev

Google Maps API 不再显示路线或标记

来自分类Dev

在Google Maps API上重新加载标记

来自分类Dev

在Google Maps API上重新加载标记

来自分类Dev

如何使用JavaScript在Google Maps API中仅获取一个标记

来自分类Dev

Google Maps for iOS,快速-如何显示标记之间的整个折线?

Related 相关文章

  1. 1

    在移动/本地应用程序上找不到404的Google Maps Javascript API V3

  2. 2

    使用React.js在Google Maps Javascript API中添加标记的问题

  3. 3

    与标记Google Maps javascript一起移动圆

  4. 4

    Google Maps标记未显示javascript

  5. 5

    Google 地图 Javascript API v3 自定义标记未显示在 ionic 应用程序上

  6. 6

    Javascript Google Maps API-标记未显示

  7. 7

    在点击的Google Maps JavaScript API上放置标记

  8. 8

    如何在Aurelia JavaScript应用程序中加载Google Maps JavaScript API?

  9. 9

    Google Maps API的JavaScript框架

  10. 10

    流星Google Maps JavaScript API

  11. 11

    Google Maps / JavaScript-显示某些标记-MySQL后端

  12. 12

    使用标记和折线Google Maps android

  13. 13

    Google Maps JavaScript API在浏览器中有效,但在设备上的Cordova应用程序中无效

  14. 14

    Google Maps Javascript API与Google Maps Embed API

  15. 15

    AngularJs和Google Maps问题:不显示标记?

  16. 16

    Google Maps Javascript API以小方块显示地图

  17. 17

    在 Google Maps Javascript API 中显示多个方向

  18. 18

    在 Google Maps JavaScript API 中绘制多条折线

  19. 19

    使用JavaScript API在Google Maps上绘制“点”

  20. 20

    使用ColdFusion CFC和SQL Server获取地址的Flex应用程序中的Google Maps JavaScript API

  21. 21

    ReactJS和Google Maps-显示标记

  22. 22

    使用Google Maps API显示标记

  23. 23

    Google Maps API-标记未显示

  24. 24

    Google Maps API:未显示标记

  25. 25

    Google Maps API 不再显示路线或标记

  26. 26

    在Google Maps API上重新加载标记

  27. 27

    在Google Maps API上重新加载标记

  28. 28

    如何使用JavaScript在Google Maps API中仅获取一个标记

  29. 29

    Google Maps for iOS,快速-如何显示标记之间的整个折线?

热门标签

归档