Files
004_comission/Man1130/task1/Man1130-python-comission/tryout/jupyter-voila-helloworld/ipynb/xleaflet.ipynb
louiscklaw fc6f79b133 update,
2025-01-31 20:57:47 +08:00

162 lines
3.8 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Using Voilà with the C++ kernel and interactive widgets"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#include <iostream>\n",
"#include <string>\n",
"\n",
"#include \"xwidgets/xoutput.hpp\"\n",
"\n",
"#include \"xleaflet/xmap.hpp\"\n",
"#include \"xleaflet/xdraw_control.hpp\"\n",
"#include \"xleaflet/xbasemaps.hpp\"\n",
"\n",
"namespace nl = nlohmann;"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"// Create map widget\n",
"auto water_color = xlf::basemap({\"OpenStreetMap\", \"France\"});\n",
"\n",
"auto map = xlf::map::initialize()\n",
" .layers({water_color})\n",
" .center({47, 363})\n",
" .zoom(5)\n",
" .finalize();\n",
"\n",
"map"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"// Create output widget to log draw events\n",
"xw::output out;\n",
"out"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"// Options for the draw control\n",
"nl::json polyline_options = {\n",
" {\"shapeOptions\", {\n",
" {\"color\", \"#6bc2e5\"},\n",
" {\"weight\", 8},\n",
" {\"opacity\", 1.0}\n",
" }}\n",
"};\n",
"\n",
"nl::json polygon_options = {\n",
" {\"shapeOptions\", {\n",
" {\"fillColor\", \"#6be5c3\"},\n",
" {\"color\", \"#6be5c3\"},\n",
" {\"fillOpacity\", 1.0}\n",
" }},\n",
" {\"drawError\", {\n",
" {\"color\", \"#dd253b\"},\n",
" {\"message\", \"Oups!\"}\n",
" }},\n",
" {\"allowIntersection\", false}\n",
"};\n",
"\n",
"nl::json circle_options = {\n",
" {\"shapeOptions\", {\n",
" {\"fillColor\", \"#efed69\"},\n",
" {\"fillOpacity\", 1.0},\n",
" {\"color\", \"#efed69\"}\n",
" }}\n",
"};\n",
"\n",
"nl::json rectangle_options = {\n",
" {\"shapeOptions\", {\n",
" {\"fillColor\", \"#fca45d\"},\n",
" {\"fillOpacity\", 1.0},\n",
" {\"color\", \"#fca45d\"}\n",
" }}\n",
"};"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"// Log last action\n",
"void print_draw_event(std::string action, nl::json geo_json)\n",
"{\n",
" // Capturing the stdout with the output widget \n",
" auto guard = out.guard();\n",
" std::cout << action << \" a \" \n",
" << geo_json[\"geometry\"][\"type\"]\n",
" << std::endl;\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"// Add the draw control and event logger\n",
"auto draw_control = xlf::draw_control::initialize()\n",
" .polyline(polyline_options)\n",
" .polygon(polygon_options)\n",
" .circle(circle_options)\n",
" .rectangle(rectangle_options)\n",
" .finalize();\n",
"\n",
"draw_control.on_draw(print_draw_event);\n",
"map.add_control(draw_control);"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "C++14",
"language": "C++14",
"name": "xcpp14"
},
"language_info": {
"codemirror_mode": "text/x-c++src",
"file_extension": ".cpp",
"mimetype": "text/x-c++src",
"name": "c++",
"version": "14"
}
},
"nbformat": 4,
"nbformat_minor": 4
}