Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图上点击标记的操作_Javascript_Reactjs_Google Maps Markers_Marker_React Google Maps - Fatal编程技术网

Javascript 谷歌地图上点击标记的操作

Javascript 谷歌地图上点击标记的操作,javascript,reactjs,google-maps-markers,marker,react-google-maps,Javascript,Reactjs,Google Maps Markers,Marker,React Google Maps,我正在用“React Google maps”制作一个Google Map应用程序,我有以下代码: 在App.js文件中,我声明图像处于以下状态: 和map.js文件中的标记定义: 。。。{ 道具。标记位置激活(i) resetInfoBox() getInfo(marker.title) 市场点击道具(一) geocodeByPlaceId(标记位置) 。然后(结果=>{ 常量地址=结果[0]。格式化的\u地址; document.getElementById('address')。i

我正在用“React Google maps”制作一个Google Map应用程序,我有以下代码:

  • 在App.js文件中,我声明图像处于以下状态:
  • 和map.js文件中的标记定义:
。。。{
道具。标记位置激活(i)
resetInfoBox()
getInfo(marker.title)
市场点击道具(一)
geocodeByPlaceId(标记位置)
。然后(结果=>{
常量地址=结果[0]。格式化的\u地址;
document.getElementById('address')。innerHTML='address:'+address;
})
.catch(错误=>console.error(错误))
}}>
我想在单击标记时更改标记符号。但这并不能很好地工作,因为当我点击marker时,每个markers图标都会改变,而不仅仅是点击的这个。。。。 我该怎么做?也许你们中的一些人知道,我的代码出了什么问题

以下是指向GitHub上具有此应用程序的存储库的链接:


谢谢你的帮助

要保持多个标记的图标状态,一个标记集合的道具是不够的。也许您可以将图像/图标添加到“marker”数据结构(markers\u all中的项目)中?嗯,我不确定是否可以只更改1个marker图标。但是如果可能的话,你可能必须保留一个所有标记的数组。检索要从阵列中更改的一个标记,然后替换该图标。嗨,mrdeadsven!谢谢你的提示-我试着这样做…谢谢你的帮助。我把这段代码放在map.js文件中:
让markerImage='path-to-image'如果(I==props.activeKey)markerImage='path-to-other-image'
,然后把markerImage放在icon:
icon={markerImage+marker.type+'.png'}
中,这样做很好:)
... state = {
        markers: markers_all,
        pageTitle: "Warsaw Cultural Map",
        listTitle: "List of Places",
        activeKey: "",
        error: "There was an error with making a request from Wikipedia.",
        image: "http://www.serwisstron.pl/icons/",   };

//This is function for onclick marker   onMarkerClick = () => {
    this.setState({image: 'http://www.serwisstron.pl/icons/yellow/'})} 
...  <Marker
    {...marker}
    key={i}
    position={marker.location}
    title={marker.title}
    icon={props.image + marker.type + '.png'}
    animation={window.google.maps.Animation.DROP}
    onClick={() => {
       props.markerLocationsActive(i)
       resetInfoBox()
       getInfo(marker.title)
       props.onMarkerClick(i)
       geocodeByPlaceId(marker.place_id)
       .then(results => {
          const address = results[0].formatted_address;
          document.getElementById('address').innerHTML = 'Address: ' + address;
        })
       .catch(error => console.error(error))
     }}>