Точка перемещения в реальном времени не меняет положение на карте в MapBox под Blazor - PullRequest
0 голосов
/ 11 января 2020

Я использую MapBox под Blazor. Есть точка с 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();
        }
     );
}

Ответы [ 2 ]

0 голосов
/ 17 января 2020

Один из разработчиков MapBox сказал, что не так.

вы передаете определение источника вместо данных в setData, который справедливо считает, что это недопустимо Geo JSON. Это работает:

map.getSource('drone').setData(window.jsonleft.data);
0 голосов
/ 12 января 2020

Ожидайте вашего метода:

public async Tassk refreshMapJson()
{
    refreshCoords();
    await JSRuntime.InvokeAsync<object>("mapBoxFunctions.refreshJSON",currJson);
    StateHasChanged();
}

Если вы не хотите использовать ожидаемый метод, тогда вызовите StateHasChanged, когда JSRuntime.InvokeAsync return;

public void refreshMapJson()
{
    refreshCoords();
    JSRuntime.InvokeVoidAsync("mapBoxFunctions.refreshJSON",currJson)
       .ContinueWith(t => StateHasChanged());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...