import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import * as serviceWorker from './serviceWorker';
import { withScriptjs, withGoogleMap, GoogleMap, Marker } from "react-google-maps"
let markers = []
function createMarkers(numMarkers){
for(let i = 0; i < numMarkers; i++){
markers.push(<Marker key={i} position={{ lat: 45.123 + (i * 0.005), lng: -75.987 }} />)
}
return markers;
}
setInterval(function(){
if(markers.length > 0 && markers[0].props.position){
let marker = markers[0];
//debugger;
let position = marker.props.position;
position.lat = position.lat - 0.005;
position.lng = position.lng - 0.005;
marker.props.position = position;
}
}, 1000)
const MyGreatMap = withScriptjs( withGoogleMap(props => <GoogleMap
defaultZoom={14}
defaultCenter={{ lat: 45.123, lng: -75.978 }}
>
{createMarkers(10)}
</GoogleMap>));
ReactDOM.render(
<MyGreatMap
googleMapURL="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=geometry,drawing,places&key=AIzaSyDS-TFZqRfUx9xPXTJrPH6eml-gGo-btZ0"
loadingElement={<div style={{ height: `100%` }} />}
containerElement={<div style={{ height: `800px` }} />}
mapElement={<div style={{ height: `100%` }} />}
/>,
document.getElementById('root'));
我确信这是错误的,它应该以某种方式更新状态,但标记中的LAT/LNG信息是道具。
没错,markers
需要移动到本地状态,因此可以引入一个组件,该组件接受markers
道具作为初始状态,然后状态更新如下:
class MapWithMarkers extends React.Component {
constructor(props) {
super(props);
this.state= {markers: this.props.markers}; //1.initialize initial state from props
}
updateMarker() {
this.setState(prevState => {
const markers = [...prevState.markers];
markers[index] = {lat: <val>, lng: <val>};
return {markers};
})
}
componentDidMount() {
this.intervalId = setInterval(this.updateMarker.bind(this), 1000);
}
componentWillUnmount(){
clearInterval(this.intervalId);
}
render() {
return (
<Map center={this.props.center} zoom={this.props.zoom} places={this.state.markers} />
);
}
}
演示
问题内容: 我正在使用NPM包创建Google Map和几个标记。 问题: 我们如何将默认的Google Maps标记添加到地图? 从这个Github问题来看,似乎我们需要使用onGoogleApiLoaded函数访问内部Google Maps API 。 参考Google Maps JS API文档中的示例 ,我们可以使用以下代码来呈现标记,但是如何定义对的引用? 当前代码: 问题答案: 从自述
问题内容: 我不想要做的是在地图上显示从某些移动设备上选择的位置。有关位置的数据在那里。 我这里需要根据从服务器接收到的数据在地图上添加标记。 假设我已经将位置数据 ({Lat,Lang}) 设置为 状态标记, 然后如何添加它以显示在地图中。 我的地图代码如下! 使用过的npm包:-谷歌地图反应 问题答案: 您可以尝试: 如果有错误,也请在此处显示,我们稍后可以修复 =========== 标记点
问题内容: 我正在尝试更新标记的位置,而不刷新整个页面。我尝试使用,但是我没有运气。 这是我到目前为止的代码。 提前致谢 这是我的JSON输出。 问题答案: 我建议使用setInterval而不是setTimeout。 这是一些代码,使用您提供的JSON并通过为每个标记添加必需的“ description”成员,在小提琴中通过JSON模拟更新:
我正在创建一个加载地图 我有一个包含标记信息的对象,它也包含google maps标记对象。我的代码检测是否应根据边界框或缩放级别删除市场。我将marker对象设置为“setMap(null);”使用firebug,我可以看到它被设置了,然后我完全删除了父对象,并且对象数据长度得到了正确更新。 当一个标记被认为删除时,我将其输出到firebug控制台,似乎正在工作,并且我可以看到该标记没有从aja
使用react-google-map与MarkerClub sterer,我如何添加和删除标记从地图/群集后,地图被安装,例如。 我尝试过简单地创建一个新标记,将map设置为refs.map 以及使用. addMarker()函数,该函数定义在用于react-google-map中的MarkerClub sterer中的mark er屋而立rplus中,但没有任何功能。 两者都返回错误。 基于以下
问题内容: 我一直在 这里 找到有关Google Maps上的PHP / MYSQL教程。 我希望每5秒钟左右从数据库更新一次标记。 据我了解,我需要使用Ajax定期更新标记,但是我很难理解要在哪里添加函数以及在哪里使用 setTimeout() 等 我发现的所有其他示例并没有真正说明正在发生的事情,一些有用的指导会很棒! 这是我的代码(与Google示例相同,但有一些 var 更改): 我希望有