Документация Engee

Карта Mapbox

Компонент Mapbox позволяет отрисовывать географическую карту.

Для выполнения этого примера необходимо создать учетную запись Mapbox и получить токен доступа.

module App
using PlotlyBase
using GenieFramework
@genietools

cities_coordinates = Dict(
    "Amsterdam" => [52.3676, 4.9041],
    "Rotterdam" => [51.9225, 4.47917],
    "The Hague" => [52.0787, 4.2888],
    "Utrecht" => [52.0843, 5.0128],
    "Eindhoven" => [51.4416, 5.4697]
)
N = length(cities_coordinates)
names = keys(cities_coordinates)
lats = [v[1] for v in values(cities_coordinates)]
longs = [v[2] for v in values(cities_coordinates)]

@app begin
    @out trace = [
        scattermapbox(
            lon=longs,
            lat=lats,
            text=names,
            mode="markers+text",
            marker=attr(size=abs.(randn(N)) * 10 .+ 4, color="blue"),
            textposition="bottom right"
        )
    ]
    @out layout = PlotlyBase.Layout(
        title="Netherlands map",
        showlegend=false,
        width=800,
        height=800,
        mapbox=attr(
            accesstoken="", # добавьте токен доступа здесь
            style="light",
            center=attr(lat=52.0, lon=5.0),  # центрируем карту на Нидерландах
            zoom=6.5
        )
    )

    # этот код служит для определения событий щелчка мышью
    @in data_click = Dict{String,Any}()  # данные из события щелчка по карте
    @in data_cursor = Dict{String,Any}()

    @onchange data_click begin
        @show data_click
        @show data_cursor
    end
end

# активируем определение событий щелчка мышью
@mounted watchplots()

ui() = plot(:trace, layout=:layout, class="sync_data")
@page("/", ui)
end