实时移动点不会改变Blazor下MapBox中地图上的位置
我在Blazor下使用MapBox。有一个点是JSON坐标实时变化的。在索引页面中,单击鼠标,我调用javascript函数:实时移动点不会改变Blazor下MapBox中地图上的位置,mapbox,real-time,blazor,Mapbox,Real Time,Blazor,我在Blazor下使用MapBox。有一个点是JSON坐标实时变化的。在索引页面中,单击鼠标,我调用javascript函数: refreshJSON: function (str) { window.jsontest = JSON.parse(str); window.map.getSource('drone').setData(window.jsontest); } 其中jsontest包含新坐标,但该点在屏幕上的位置不变。 我怎样才能解决这个问题? 在Index.razor代码
refreshJSON: function (str) {
window.jsontest = JSON.parse(str);
window.map.getSource('drone').setData(window.jsontest);
}
其中jsontest包含新坐标,但该点在屏幕上的位置不变。
我怎样才能解决这个问题?
在Index.razor代码中:
public void refreshMapJson()
{
refreshCoords();
JSRuntime.InvokeAsync<object>("mapBoxFunctions.refreshJSON",currJson);
InvokeAsync(() =>
{
StateHasChanged();
}
);
}
public void refreshMapJson()
{
刷新Coords();
JSRuntime.InvokeAsync(“mapBoxFunctions.refreshJSON”,currJson);
InvokeAsync(()=>
{
StateHasChanged();
}
);
}
等待您的方法:
public async Tassk refreshMapJson()
{
refreshCoords();
await JSRuntime.InvokeAsync<object>("mapBoxFunctions.refreshJSON",currJson);
StateHasChanged();
}
等待您的方法:
public async Tassk refreshMapJson()
{
refreshCoords();
await JSRuntime.InvokeAsync<object>("mapBoxFunctions.refreshJSON",currJson);
StateHasChanged();
}
一位MapBox开发人员说出了什么问题 您正在将源定义而不是数据传递给setData,setData理所当然地认为这不是有效的GeoJSON。这项工作:
一位MapBox开发人员说出了什么问题 您正在将源定义而不是数据传递给setData,setData理所当然地认为这不是有效的GeoJSON。这项工作:
尝试以下方法:从代码中删除对InvokeAsync的调用,并将剩下的内容放在OnAfterRenderAsync方法中,这样就可以了。该点会改变位置,但整个地图会重新绘制(约3秒),而不仅仅是该点。这不适合尝试以下方法:从代码中删除对InvokeAsync的调用,并将剩下的内容放在OnAfterRenderAsync方法中,这样做有效。该点会改变位置,但整个地图会重新绘制(约3秒),而不仅仅是该点。这不适用于第一种情况,即点改变位置,但重新绘制整个地图(~3秒),而不仅仅是点。这不合适。我使用了下一个代码:私有异步任务callJson(){Time=DateTime.UtcNow.ToString();refreshCoords();wait JSRuntime.InvokeAsync(“refreshJSON”,currJson”).configurewait(false);wait InvokeAsync(()=>{StateHasChanged();});}在第二种情况下-ValueTask不包含“ContinueWith”的定义。如果使用代码“JSRuntime.InvokeVoidAsync(“refreshJSON”,currJson).AsTask().ContinueWith(t=>StateHasChanged());”则我会得到一个错误-“当前线程与调度程序没有关联。在触发渲染或组件状态时,使用InvokeAsync()将执行切换到调度程序。”“哦,是的,我忘记了在第一种情况下,点的位置会发生变化,但整个映射会被重绘(~3秒)我使用了下一个代码:private async Task callJson(){Time=DateTime.UtcNow.ToString();refreshCoords();wait JSRuntime.InvokeAsync(“refreshJSON”,currJson”).configurewait(false);wait InvokeAsync(()=>{StateHasChanged();});}在第二种情况下-ValueTask不包含“ContinueWith”的定义。如果使用代码“JSRuntime.InvokeVoidAsync(“refreshJSON”,currJson.AsTask().ContinueWith(t=>StateHasChanged());”那么我会得到一个错误--当前线程与调度程序没有关联。在触发呈现或组件状态时,使用InvokeAsync()将执行切换到调度程序。“”哦,是的,我忘了
map.getSource('drone').setData(window.jsonleft.data);