实时移动点不会更改地图上 MapBox 中 Blazor 下的位置



我在Blazor下使用MapBox。有一个点的 JSON 坐标实时变化。在索引剃刀页面中,单击鼠标,我调用javascript函数:

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 async Tassk refreshMapJson()
{
refreshCoords();
await JSRuntime.InvokeAsync<object>("mapBoxFunctions.refreshJSON",currJson);
StateHasChanged();
}

如果您不想使用可等待的方法,请在返回时调用JSRuntime.InvokeAsyncStateHasChanged;

public void refreshMapJson()
{
refreshCoords();
JSRuntime.InvokeVoidAsync("mapBoxFunctions.refreshJSON",currJson)
.ContinueWith(t => StateHasChanged());
}

一位MapBox开发人员说出了什么问题。

您正在将源定义而不是数据传递给 setData,它正确地认为这不是有效的 GeoJSON。这有效:

map.getSource('drone').setData(window.jsonleft.data);

最新更新