{"id":9473,"date":"2024-12-09T12:53:37","date_gmt":"2024-12-09T10:53:37","guid":{"rendered":"https:\/\/www.fly-air3.com\/?page_id=9473"},"modified":"2024-12-09T13:03:12","modified_gmt":"2024-12-09T11:03:12","slug":"wpt-viewer","status":"publish","type":"page","link":"https:\/\/www.fly-air3.com\/fr\/support\/wpt-viewer\/","title":{"rendered":"WPT viewer"},"content":{"rendered":"<style>\n        .container {\n            max-width: 1200px;\n            margin: 0 auto;\n            padding: 20px;\n        }\n        .header {\n            text-align: center;\n            margin-bottom: 2rem;\n        }\n        .content {\n            display: grid;\n            grid-template-columns: 300px 1fr;\n            gap: 20px;\n        }\n        .controls {\n            background: white;\n            padding: 20px;\n            border-radius: 8px;\n            box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n        }\n        #map {\n            height: 600px;\n            border-radius: 8px;\n            box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n        }\n        .file-upload {\n            border: 2px dashed #ccc;\n            padding: 20px;\n            text-align: center;\n            margin-bottom: 20px;\n            border-radius: 8px;\n            cursor: pointer;\n            position: relative;\n        }\n        .file-upload:hover {\n            border-color: #999;\n            background: #f9f9f9;\n        }\n        .file-upload input[type=\"file\"] {\n            position: absolute;\n            width: 100%;\n            height: 100%;\n            top: 0;\n            left: 0;\n            opacity: 0;\n            cursor: pointer;\n        }\n        .radius-control {\n            margin-top: 20px;\n        }\n        .radius-control label {\n            display: block;\n            margin-bottom: 8px;\n        }\n        .radius-control input {\n            width: 100%;\n            padding: 8px;\n            border: 1px solid #ccc;\n            border-radius: 4px;\n        }\n        @media (max-width: 768px) {\n            .content {\n                grid-template-columns: 1fr;\n            }\n            #map {\n                height: 400px;\n            }\n        }\n    <\/style>\n<div class=\"container\">\n<div class=\"header\">\n<h1>WPT Map Viewer<\/h1>\n<p>Visualisez vos fichiers de points de navigation<\/p>\n<\/div>\n<div class=\"content\">\n<div class=\"controls\">\n<div id=\"dropZone\" class=\"file-upload\"><input id=\"fileInput\" accept=\".wpt\" type=\"file\" \/>Cliquez ou glissez un fichier .wpt ici<\/p>\n<\/div>\n<div class=\"radius-control\"><label for=\"radius\">Rayon (m\u00e8tres):<\/label> <input id=\"radius\" min=\"0\" type=\"number\" value=\"1000\" \/><\/div>\n<\/div>\n<div id=\"map\"><\/div>\n<\/div>\n<\/div>\n<p><script src=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.js\"><\/script> <script>\n        let map;\n        let markers = [];\n        let circles = [];<\/p>\n<p>        \/\/ Initialisation de la carte\n        function initMap() {\n            map = L.map('map').setView([50.5, 4.5], 8);\n            L.tileLayer('https:\/\/{s}.tile.openstreetmap.org\/{z}\/{x}\/{y}.png', {\n                attribution: '\u00a9 OpenStreetMap contributors'\n            }).addTo(map);\n        }<\/p>\n<p>        \/\/ Parser pour les fichiers WPT\n        function parseWptFile(content) {\n            const lines = content.trim().split('\\n');\n            const waypoints = [];<\/p>\n<p>            for (const line of lines) {\n                if (!line.trim() || line.startsWith('OziExplorer') || \n                    line.startsWith('WGS') || line.startsWith('Reserved')) {\n                    continue;\n                }<\/p>\n<p>                const match = line.match(\/^\\s*\\d+,([^,]+),\\s*(-?\\d+\\.\\d+),\\s*(-?\\d+\\.\\d+)\/);\n                if (match) {\n                    const [, name, lat, lon] = match;\n                    waypoints.push({\n                        name: name.trim(),\n                        latitude: parseFloat(lat),\n                        longitude: parseFloat(lon)\n                    });\n                }\n            }<\/p>\n<p>            return waypoints;\n        }<\/p>\n<p>        \/\/ Affichage des waypoints sur la carte\n        function displayWaypoints(waypoints) {\n            \/\/ Nettoyage de la carte\n            markers.forEach(marker => marker.remove());\n            circles.forEach(circle => circle.remove());\n            markers = [];\n            circles = [];<\/p>\n<p>            \/\/ Ajout des nouveaux marqueurs\n            waypoints.forEach(waypoint => {\n                const marker = L.marker([waypoint.latitude, waypoint.longitude])\n                    .bindPopup(`\n                        <strong>${waypoint.name}<\/strong><br \/>\n                        Lat: ${waypoint.latitude.toFixed(6)}<br \/>\n                        Lon: ${waypoint.longitude.toFixed(6)}\n                    `);\n                marker.addTo(map);\n                markers.push(marker);\n            });<\/p>\n<p>            \/\/ Centrage de la carte si des waypoints existent\n            if (waypoints.length > 0) {\n                const bounds = L.latLngBounds(waypoints.map(w => [w.latitude, w.longitude]));\n                map.fitBounds(bounds);\n                updateRadius(); \/\/ Mise \u00e0 jour des rayons apr\u00e8s l'ajout des marqueurs\n            }\n        }<\/p>\n<p>        \/\/ Mise \u00e0 jour des cercles de rayon\n        function updateRadius() {\n            const radius = parseInt(document.getElementById('radius').value) || 0;<\/p>\n<p>            \/\/ Suppression des anciens cercles\n            circles.forEach(circle => circle.remove());\n            circles = [];<\/p>\n<p>            \/\/ Cr\u00e9ation des nouveaux cercles\n            markers.forEach(marker => {\n                if (radius > 0) {\n                    const circle = L.circle(marker.getLatLng(), {\n                        radius: radius,\n                        color: '#3388ff',\n                        fillColor: '#3388ff',\n                        fillOpacity: 0.1\n                    }).addTo(map);\n                    circles.push(circle);\n                }\n            });\n        }<\/p>\n<p>        \/\/ Gestion du fichier\n        function handleFile(file) {\n            if (!file || !file.name.toLowerCase().endsWith('.wpt')) {\n                alert('Veuillez s\u00e9lectionner un fichier .wpt valide');\n                return;\n            }<\/p>\n<p>            const reader = new FileReader();\n            reader.onload = (e) => {\n                try {\n                    const waypoints = parseWptFile(e.target.result);\n                    if (waypoints.length === 0) {\n                        alert('Aucun point de navigation trouv\u00e9 dans le fichier');\n                        return;\n                    }\n                    displayWaypoints(waypoints);\n                } catch (error) {\n                    console.error('Erreur lors de la lecture du fichier:', error);\n                    alert('Erreur lors de la lecture du fichier. V\u00e9rifiez le format.');\n                }\n            };\n            reader.readAsText(file);\n        }<\/p>\n<p>        \/\/ Initialisation des \u00e9v\u00e9nements\n        function initEventListeners() {\n            const dropZone = document.getElementById('dropZone');\n            const fileInput = document.getElementById('fileInput');\n            const radiusInput = document.getElementById('radius');<\/p>\n<p>            \/\/ Gestion du glisser-d\u00e9poser\n            dropZone.addEventListener('dragover', (e) => {\n                e.preventDefault();\n                e.stopPropagation();\n                dropZone.style.backgroundColor = '#f0f0f0';\n            });<\/p>\n<p>            dropZone.addEventListener('dragleave', (e) => {\n                e.preventDefault();\n                e.stopPropagation();\n                dropZone.style.backgroundColor = '';\n            });<\/p>\n<p>            dropZone.addEventListener('drop', (e) => {\n                e.preventDefault();\n                e.stopPropagation();\n                dropZone.style.backgroundColor = '';\n                const file = e.dataTransfer.files[0];\n                handleFile(file);\n            });<\/p>\n<p>            \/\/ Gestion du clic sur l'input file\n            fileInput.addEventListener('change', (e) => {\n                const file = e.target.files[0];\n                handleFile(file);\n            });<\/p>\n<p>            \/\/ Gestion du changement de rayon\n            radiusInput.addEventListener('input', updateRadius);\n        }<\/p>\n<p>        \/\/ Initialisation\n        document.addEventListener('DOMContentLoaded', () => {\n            initMap();\n            initEventListeners();\n        });\n    <\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>WPT Map Viewer Visualisez vos fichiers de points de navigation Cliquez ou glissez un fichier .wpt ici Rayon (m\u00e8tres):<\/p>","protected":false},"author":1,"featured_media":0,"parent":3284,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-9473","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>WPT viewer - AIR\u00b3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.fly-air3.com\/fr\/support\/wpt-viewer\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WPT viewer - AIR\u00b3\" \/>\n<meta property=\"og:description\" content=\"WPT Map Viewer Visualisez vos fichiers de points de navigation Cliquez ou glissez un fichier .wpt ici Rayon (m\u00e8tres):\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.fly-air3.com\/fr\/support\/wpt-viewer\/\" \/>\n<meta property=\"og:site_name\" content=\"AIR\u00b3\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/FLYAIRCUBE\/\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-09T11:03:12+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.fly-air3.com\\\/support\\\/wpt-viewer\\\/\",\"url\":\"https:\\\/\\\/www.fly-air3.com\\\/support\\\/wpt-viewer\\\/\",\"name\":\"WPT viewer - AIR\u00b3\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.fly-air3.com\\\/en\\\/#website\"},\"datePublished\":\"2024-12-09T10:53:37+00:00\",\"dateModified\":\"2024-12-09T11:03:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.fly-air3.com\\\/support\\\/wpt-viewer\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.fly-air3.com\\\/support\\\/wpt-viewer\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.fly-air3.com\\\/support\\\/wpt-viewer\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.fly-air3.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Support\",\"item\":\"https:\\\/\\\/www.fly-air3.com\\\/support\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"WPT viewer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.fly-air3.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.fly-air3.com\\\/en\\\/\",\"name\":\"AIR\u00b3\",\"description\":\"All in one Rugged 7&quot; Android New generation paragliding flight instrument. Vario GPS Livetracking\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.fly-air3.com\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.fly-air3.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.fly-air3.com\\\/en\\\/#organization\",\"name\":\"Berfon SPRL\",\"url\":\"https:\\\/\\\/www.fly-air3.com\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.fly-air3.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"http:\\\/\\\/www.fly-air3.com\\\/wp-content\\\/uploads\\\/sites\\\/15\\\/2019\\\/04\\\/AIR\u00b3-CARRE_Logo.png\",\"contentUrl\":\"http:\\\/\\\/www.fly-air3.com\\\/wp-content\\\/uploads\\\/sites\\\/15\\\/2019\\\/04\\\/AIR\u00b3-CARRE_Logo.png\",\"width\":600,\"height\":600,\"caption\":\"Berfon SPRL\"},\"image\":{\"@id\":\"https:\\\/\\\/www.fly-air3.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/FLYAIRCUBE\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"WPT viewer - AIR\u00b3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.fly-air3.com\/fr\/support\/wpt-viewer\/","og_locale":"fr_FR","og_type":"article","og_title":"WPT viewer - AIR\u00b3","og_description":"WPT Map Viewer Visualisez vos fichiers de points de navigation Cliquez ou glissez un fichier .wpt ici Rayon (m\u00e8tres):","og_url":"https:\/\/www.fly-air3.com\/fr\/support\/wpt-viewer\/","og_site_name":"AIR\u00b3","article_publisher":"https:\/\/www.facebook.com\/FLYAIRCUBE\/","article_modified_time":"2024-12-09T11:03:12+00:00","twitter_card":"summary_large_image","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.fly-air3.com\/support\/wpt-viewer\/","url":"https:\/\/www.fly-air3.com\/support\/wpt-viewer\/","name":"WPT viewer - AIR\u00b3","isPartOf":{"@id":"https:\/\/www.fly-air3.com\/en\/#website"},"datePublished":"2024-12-09T10:53:37+00:00","dateModified":"2024-12-09T11:03:12+00:00","breadcrumb":{"@id":"https:\/\/www.fly-air3.com\/support\/wpt-viewer\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.fly-air3.com\/support\/wpt-viewer\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.fly-air3.com\/support\/wpt-viewer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.fly-air3.com\/"},{"@type":"ListItem","position":2,"name":"Support","item":"https:\/\/www.fly-air3.com\/support\/"},{"@type":"ListItem","position":3,"name":"WPT viewer"}]},{"@type":"WebSite","@id":"https:\/\/www.fly-air3.com\/en\/#website","url":"https:\/\/www.fly-air3.com\/en\/","name":"AIR\u00b3","description":"All in one Rugged 7&quot; Android New generation paragliding flight instrument. Vario GPS Livetracking","publisher":{"@id":"https:\/\/www.fly-air3.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.fly-air3.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.fly-air3.com\/en\/#organization","name":"Berfon SPRL","url":"https:\/\/www.fly-air3.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.fly-air3.com\/en\/#\/schema\/logo\/image\/","url":"http:\/\/www.fly-air3.com\/wp-content\/uploads\/sites\/15\/2019\/04\/AIR\u00b3-CARRE_Logo.png","contentUrl":"http:\/\/www.fly-air3.com\/wp-content\/uploads\/sites\/15\/2019\/04\/AIR\u00b3-CARRE_Logo.png","width":600,"height":600,"caption":"Berfon SPRL"},"image":{"@id":"https:\/\/www.fly-air3.com\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/FLYAIRCUBE\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.fly-air3.com\/fr\/wp-json\/wp\/v2\/pages\/9473","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fly-air3.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.fly-air3.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.fly-air3.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fly-air3.com\/fr\/wp-json\/wp\/v2\/comments?post=9473"}],"version-history":[{"count":5,"href":"https:\/\/www.fly-air3.com\/fr\/wp-json\/wp\/v2\/pages\/9473\/revisions"}],"predecessor-version":[{"id":9479,"href":"https:\/\/www.fly-air3.com\/fr\/wp-json\/wp\/v2\/pages\/9473\/revisions\/9479"}],"up":[{"embeddable":true,"href":"https:\/\/www.fly-air3.com\/fr\/wp-json\/wp\/v2\/pages\/3284"}],"wp:attachment":[{"href":"https:\/\/www.fly-air3.com\/fr\/wp-json\/wp\/v2\/media?parent=9473"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}