Python 3.x keplar.gl操作addDataToMap将旧数据集替换为新数据集,也将丢失地图层
我有Kepler.gl演示应用程序,并将其转换为Jupiter绑定应用程序,在该应用程序中,我想修改AddDataToMap选项卡,在该选项卡中,用户希望选择需要在地图上显示的自己的数据,因此我对js绑定应用程序做了以下更改Python 3.x keplar.gl操作addDataToMap将旧数据集替换为新数据集,也将丢失地图层,python-3.x,react-redux,kepler,Python 3.x,React Redux,Kepler,我有Kepler.gl演示应用程序,并将其转换为Jupiter绑定应用程序,在该应用程序中,我想修改AddDataToMap选项卡,在该选项卡中,用户希望选择需要在地图上显示的自己的数据,因此我对js绑定应用程序做了以下更改 store.js --------- const customizedKeplerGlReducer = keplerGlReducer.initialState({ uiState: { currentModal: null, activeSidePa
store.js
---------
const customizedKeplerGlReducer = keplerGlReducer.initialState({
uiState: {
currentModal: null,
activeSidePanel: null
}
});
const reducers = combineReducers({
// mount keplerGl reducer
keplerGl: customizedKeplerGlReducer
});
const createAppStore = onChangeHandler => {
const updatesMiddleware = store => next => action => {
// exclude some actions
// Call the next dispatch method in the middleware chain.
/* eslint-disable callback-return */
const returnValue = next(action);
/* eslint-enable callback-return */
// state after dispatch
if (typeof onChangeHandler === 'function') {
onChangeHandler(action, store);
}
// This will likely be the action itself, unless
// a middleware further in chain changed it.
return returnValue;
};
const middlewares = enhanceReduxMiddleware([thunk,updatesMiddleware]);
const enhancers = [applyMiddleware(...middlewares)];
const store = createStore(reducers, {}, compose(...enhancers));
return store;
};
export default createAppStore;
reducer.js
-------------
const demoReducer = combineReducers({
// mount keplerGl reducer
keplerGl: keplerGlReducer,
app: appReducer
});
loadremotemap.js
--------------------
onLoadRemoteMap = () => {
const {dataUrl} = this.state;
if (!dataUrl) {
return;
}
const requestOptions = {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify( dataUrl)
};
fetch('http://192.168.43.105:5000/api/',requestOptions).then(res => res.json()).then(data => {
console.log(data)
this.props.onLoadRemoteMap({data},{dataUrl});
// this.props.onLoadRemoteMap({dataUrl});
});
//this.props.onLoadRemoteMap({dataUrl});
};
button
------------
<StyledBtn type="submit" onClick={this.onLoadRemoteMap}>
action.js
--------------
export function loadRemoteMap(options,dataurl) {
//console.log(sampleTripData);
var rowdata = options.data["rows"]["0"];
var rowarray=[];
rowdata.forEach(obj=>{
var myInnerArray=[];
Object.keys(obj).forEach(key=>{
myInnerArray.push(obj[key]);
})
rowarray.push(myInnerArray);
});
const visurdata = {
fields:options.data["schema"]["0"],
rows:rowarray
// rows: [
// ['test1', -73.99389648, 40.75011063],
// ['test2', -73.97642517, 40.73981094],
// ['test3', -73.96870422, 40.75424576],
// ]
};
//console.log(visurdata);
const sampleConfig = {
visState: {
filters: [
{
id: dataurl,
dataId: dataurl,
name: dataurl,
// type: 'timeRange',
enlarged: true
}
]
}
}
return dispatch => {
dispatch(setLoadingMapStatus(true));
dispatch(addDataToMap({datasets: {
info: {
label: dataurl.dataUrl,
id: dataurl.dataUrl
},
data: visurdata
},
option: {
centerMap: true,
readOnly: false,
keepExistingConfig: true
},
info: {
title: dataurl.dataUrl,
description: dataurl.dataUrl
},
// config: sampleConfig
})
).then({
});
error => {
const {target = {}} = error;
const {status, responseText} = target;
dispatch(loadRemoteResourceError({status, message: responseText}, options.dataUrl));
}
};
}
store.js
---------
const customizedKeplerGlReducer=keplerGlReducer.initialState({
uiState:{
currentModal:null,
activeSidePanel:空
}
});
常数减速机=组合减速机({
//安装开普勒减速器
开普勒:自定义开普勒导出器
});
const createAppStore=onChangeHandler=>{
const updatesMiddleware=store=>next=>action=>{
//排除某些操作
//调用中间件链中的下一个分派方法。
/*eslint禁用回调返回*/
const returnValue=下一步(操作);
/*eslint启用回调返回*/
//发文后陈述
if(onChangeHandler的类型==='function'){
onChangeHandler(操作、存储);
}
//这很可能是行动本身,除非
//链中的另一个中间件改变了它。
返回值;
};
const middleware=enhancedUxMiddleware([thunk,updatesMiddleware]);
常量增强器=[applyMiddleware(…中间件)];
conststore=createStore(还原子,{},组合(…增强子));
退货店;
};
导出默认的createAppStore;
reducer.js
-------------
const demoReducer=组合减速机({
//安装开普勒减速器
开普勒,
应用程序:评估员
});
loadremotemap.js
--------------------
onLoadRemoteMap=()=>{
const{dataUrl}=this.state;
如果(!dataUrl){
返回;
}
常量请求选项={
方法:“POST”,
标题:{'Content-Type':'application/json'},
正文:JSON.stringify(dataUrl)
};
取('http://192.168.43.105:5000/api/,requestOptions)。然后(res=>res.json())。然后(data=>{
console.log(数据)
this.props.onLoadRemoteMap({data},{dataUrl});
//this.props.onLoadRemoteMap({dataUrl});
});
//this.props.onLoadRemoteMap({dataUrl});
};
按钮
------------
action.js
--------------
导出函数loadRemoteMap(选项、dataurl){
//console.log(sampleTripData);
var rowdata=options.data[“行”][“0”];
var rowarray=[];
rowdata.forEach(obj=>{
var myInnerArray=[];
Object.keys(obj.forEach)(key=>{
push(obj[key]);
})
推送(myInnerArray);
});
常量visurdata={
字段:options.data[“schema”][“0”],
行:行数组
//行:[
//[test1',-73.99389648,40.75011063],
//[test2',-73.97642517,40.73981094],
//[test3',-73.96870422,40.75424576],
// ]
};
//console.log(visurdata);
常量sampleConfig={
内脏状态:{
过滤器:[
{
id:dataurl,
dataId:dataurl,
名称:dataurl,
//键入:“时间范围”,
放大:对
}
]
}
}
返回调度=>{
调度(setLoadingMapStatus(true));
分派(addDataToMap({数据集:{
信息:{
标签:dataurl.dataurl,
id:dataurl.dataurl
},
数据:visurdata
},
选项:{
中心地图:对,
只读:false,
keepExistingConfig:true
},
信息:{
标题:dataurl.dataurl,
描述:dataurl.dataurl
},
//config:sampleConfig
})
).那么({
});
错误=>{
常量{target={}}=error;
const{status,responseText}=target;
分派(loadRemoteResourceError({status,message:responseText},options.dataUrl));
}
};
}
但是,每当我尝试添加新数据集时,旧数据集将自动删除