Глядя на документы о act-google-maps , я смог собрать воедино некоторый код для отображения карты со статическими данными.Теперь мне нужно внести изменения в карту на основе новых данных, поступающих из API или периодических обновлений, и не вижу никаких разговоров о том, как это сделать.
Чтобы создать первоначальное приложение, я создал «npx create-реагировать-приложение xxx», чтобы создать приложение, а затем добавил необходимые пакеты npm для реагирования-google-maps.Вот основной код:
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'));
Когда я обновляю реквизит, ничего не происходит.Я уверен, что это неправильно, и это должно как-то обновлять состояние, но информация о лат / лнг в маркерах - это реквизит.
Каков наилучший способ обновления вещей в Reaction-Google-Maps?Google maps в целом - это API с интенсивным использованием JavaScript, поэтому я не знаю, может ли он работать «по реакции».Каков наилучший способ внести изменения в реакции-google-карты, чтобы заставить их эффективно повторно выполнить рендеринг с изменениями?