{"id":45414241,"url":"https://github.com/grumpypixel/msfs2020-gopilot","last_synced_at":"2026-02-22T00:44:29.650Z","repository":{"id":46329655,"uuid":"335325741","full_name":"grumpypixel/msfs2020-gopilot","owner":"grumpypixel","description":"Just another browser-based VFR map for Microsoft Flight Simulator 2020 (MSFS2020) using Golang","archived":false,"fork":false,"pushed_at":"2021-12-09T10:43:13.000Z","size":11977,"stargazers_count":16,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-11-13T13:35:36.948Z","etag":null,"topics":["flight","flight-simulator","fs2020","golang","map","microsoft-flight-simulator-2020","msfs2020","simconnect","simulator","vfr"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grumpypixel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-02-02T14:59:21.000Z","updated_at":"2024-10-23T02:40:35.000Z","dependencies_parsed_at":"2022-08-30T03:41:27.653Z","dependency_job_id":null,"html_url":"https://github.com/grumpypixel/msfs2020-gopilot","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/grumpypixel/msfs2020-gopilot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grumpypixel%2Fmsfs2020-gopilot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grumpypixel%2Fmsfs2020-gopilot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grumpypixel%2Fmsfs2020-gopilot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grumpypixel%2Fmsfs2020-gopilot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grumpypixel","download_url":"https://codeload.github.com/grumpypixel/msfs2020-gopilot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grumpypixel%2Fmsfs2020-gopilot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29701249,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T23:35:04.139Z","status":"ssl_error","status_checked_at":"2026-02-21T23:35:03.832Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flight","flight-simulator","fs2020","golang","map","microsoft-flight-simulator-2020","msfs2020","simconnect","simulator","vfr"],"created_at":"2026-02-22T00:44:28.724Z","updated_at":"2026-02-22T00:44:29.644Z","avatar_url":"https://github.com/grumpypixel.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# msfs2020-gopilot\n\n## tl;dr\nGoPilot is just another browser-based [VFR Map](https://en.wikipedia.org/wiki/Visual_flight_rules) for [Microsoft Flight Simulator 2020](https://www.flightsimulator.com) (MSFS2020).\n\n## Main Features\n\n* VFR Map\n    * With maps and overlays from [OpenStreetMap](https://www.openstreetmap.org), [Carto](https://carto.com), [Stamen Design](https://stamen.com), [OpenTopoMap](https://opentopomap.org), [Mapbox](https://www.mapbox.com/maps), [Bing Maps](https://www.bing.com/maps), [openAIP](https://www.openaip.net) and [ESRI](https://de.wikipedia.org/wiki/ESRI)\n    * a HUD displaying vital information as heading, airspeed, altitude, vspeed, elevator/rudder trim, outside air temperature, wind velocity...\n    * Your latitude/longitude position\n    * a humble map marker\n* Teleport Service\n    * Pick a point on the map, select the desired altitude, heading and airspeed and off you go! *wheee!*\n* Airport Finder\n    * Locate airports anywhere on the map within a specific radius using data from [OurAirports](https://ourairports.com)\n\n## Releases\n\nDownload the latest version [here](https://github.com/grumpypixel/msfs2020-gopilot/releases).\n\nUnzip the archive, run gopilot.exe and browse to `http://localhost:8888` (or: `http://whatever-your-ip-address-may-be:8888`).\n\n## Screenshot(s)\n\u003cimg src=\"https://user-images.githubusercontent.com/28186486/107130271-09163700-68cc-11eb-8273-60000598fd9d.png\" width=\"18%\"\u003e\u003c/img\u003e\n\u003cimg src=\"https://user-images.githubusercontent.com/28186486/107130274-0b789100-68cc-11eb-80ed-815dccc20fff.png\" width=\"18%\"\u003e\u003c/img\u003e\n\u003cimg src=\"https://user-images.githubusercontent.com/28186486/107130276-0fa4ae80-68cc-11eb-8a6e-4b9d2638fe5e.png\" width=\"18%\"\u003e\u003c/img\u003e\n\u003cimg src=\"https://user-images.githubusercontent.com/28186486/107130277-129f9f00-68cc-11eb-9120-14a9ecce852d.png\" width=\"18%\"\u003e\u003c/img\u003e\n\u003cimg src=\"https://user-images.githubusercontent.com/28186486/108609536-d2154a80-73ce-11eb-935d-498923f8b538.png\" width=\"18%\"\u003e\u003c/img\u003e\n\n## Run GoPilot\n\nRun GoPilot:\n\n```console\n$ gopilot.exe\n```\n\nOr explicitly specify the config file:\n\n```console\n$ gopilot.exe --cfg configs/config.yml\n```\n\nOr run with your own configuration file:\n\n```console\n$ gopilot.exe --cfg configs/my-config-file.yml\n```\n\n## GoPilot is running. Now what?\n\nThe gopilot executable starts a local web server which you can connect to with a browser.\n\nVFR Map:\\\n`http://localhost:8888`\\\nor\\\n`http://whatever-your-ip-address-may-be:8888`\n\nTeleport Service:\\\n`http://localhost:8888/teleport`\n\nAirport Finder:\\\n`http://localhost:8888/airports`\n\n## Web Server API\n\nThe following routes are available:\n* `/vfrmap` or `/` opens the VFR map\n* `/airports` opens the Airport Finder\n* `/teleport` opens the Teleport Service. Be advised not to teleport yourself into the ground mistakenly.\n* `/mehmap` opens a plain \u0026 simple map without distractions. (No HUD. No nothing. Meh.)\n* `/setdata` opens an *experimental* and *hideous* page where you can manually set data on the *sim object*. DO NOT USE THIS if you don't know what you're doing. This might (and probably will) CRASH your simulator. Seriously.\n* `/simvars` displays all registered simulation variables (no auto-update)\n* `/debug` displays debug information (also no auto-update)\n\nExamples:\n* `http://localhost:8888/vfrmap` or simply: `http://localhost:8888`\n* `http://localhost:8888/airports`\n* `http://localhost:8888/teleport`\n* `http://localhost:8888/mehmap`\n* `http://localhost:8888/setdata`\n* `http://localhost:8888/simvars`\n* `http://localhost:8888/debug`\n\n## VFR Map Options\n\nThe VFR map comes with a bunch of options (*URL Parameters*) which can be specified in the address bar.\n\nThe format is as follows:\\\n`http://localhost:8888?\u003cPARAM_NAME\u003e=\u003cPARAM_VALUE\u003e`\n\nOr a combination of multiple options:\\\n`http://localhost:8888?\u003cPARAM_NAME_1\u003e=\u003cVALUE_1\u003e\u0026\u003cPARAM_NAME_2\u003e=\u003cVALUE_2\u003e`\n\nList of available options:\n\n* `default_map=\u003cmap-name\u003e` - set the default map (default: OpenStreetMap)\n* `layer_control=true|false` - show/hide the layer control (default: true)\n* `scale_control=true|false` - show/hide the scale control (default: true)\n* `zoom_control=true|false` - show/hide the zoom control (default: true)\n* `dms_coords=true|false` - display latitude/longitude coordinates in DMS format (*Degrees Minutes Seconds*) (default: true)\n* `hud=\u003ctrue|false\u003e` - show/hide the HUD (default: true)\n* `strip_title=true|false` - remove \"Asobo\" from the plane's type name (default: false)\n* `units=\u003ctrue|false\u003e` - show/hide the units in the HUD (default: true)\n* `watermark=true|false` - display a watermark in the right bottom corner (default: false)\n* `watermark_size=\u003cvalue\u003e` - specify the watermark's size (default: 128px). *128px*/*128em*/*128* will result in different sizes.\n* `watermark_url=\u003curl\u003e` - specify the url of the watermark (default: load a placeholder)\n* `watermark_position=bottomright|bottomleft|topleft|topright` - set the watermark's position (default: bottomright)\n* `attributions=true|false` - show/hide the attributions (default: true)\n* `position_overlay=true|false` - show/hide the latitude-longitude position overlay (default: true)\n* `plane_overlay=true|false` - show/hide the follow-plane/center-on-plane overlay (default: true)\n* `plane_size=\u003cnumber\u003e` - specifiy the size of the plane (default: 64)\n* `plane_opacity=\u003cdecimal\u003e` - specify the plane's opacity as a decimal value (default: 1.0)\n* `plane_style=black|gray|green|white` - set the plane's color (default: white)\n* `open_in=\u003cbing|google\u003e` - open a marked spot in either Google Maps or Bing Maps (default: bing)\n* `marker_event=click|dblclick|contextmenu` - specify the mouse event with which the map marker is placed (default: click)\n* `mapbox_token=\u003ctoken\u003e` - use your own token for [Mapbox](https://docs.mapbox.com/help/tutorials/get-started-tokens-api/) since the one provided is limited\n* `bing_key=\u003ckey\u003e` - use your own key for [Bing Maps](https://docs.microsoft.com/en-us/bingmaps/getting-started/bing-maps-dev-center-help/getting-a-bing-maps-key) since the one provided is also limited\n* `bing_culture=\u003cculture-code\u003e` - set the culture code for Bing Maps (default: en-US). See [Bing Maps Culture Codes](https://docs.microsoft.com/en-us/bingmaps/rest-services/common-parameters-and-types/supported-culture-codes)\n\nNote: Boolean parameters can be entered as *true* or *false*, *1* or *0*, *yes* or *no*, *yay* or *nay*, *yeah* or *nope*.\n\n### Examples for VFR Map Options\n\nRandom example:\n```console\nhttp://localhost:8888/?plane_style=green\u0026plane_size=128\u0026plane_opacity=0.73\u0026open_in=bing\u0026dms_coords=0\u0026watermark=1\u0026watermark_url=https://media.giphy.com/media/SgwPtMD47PV04/giphy.gif\u0026watermark_size=256px\u0026marker_event=contextmenu\u0026layer_control=0\u0026scale_control=0\u0026zoom_control=false\u0026attributions=0\n```\n\nOr go zen and switch off all overlays:\n```console\nhttp://localhost:8888/?hud=0\u0026plane_overlay=0\u0026position_overlay=0\u0026scale_control=0\u0026layer_control=0\u0026zoom_control=0\u0026attributions=0\n```\n\nSet a default map:\n```console\n# Show CartoDB Positron per default:\nhttp://localhost:8888/?default_map=CartoDB.Positron\n\n# Show Bing Maps Aerial per default:\nhttp://localhost:8888/?default_map=BingMaps.Aerial\n```\n\nDefault map options:\n* BingMaps.Light\n* BingMaps.Dark\n* BingMaps.Gray\n* BingMaps.Aerial\n* CartoDB.DarkMatter\n* CartoDB.Positron\n* CartoDB.Voyager\n* Esri.WorldGrayCanvas\n* Esri.WorldImagery\n* Esri.WorldStreetMap\n* Esri.WorldTopoMap\n* Mapbox\n* OpenStreetMap\n* OpenStreetMap.DE\n* OpenStreetMap.FR\n* OpenStreeMap.Gray\n* OpenStreetMap.HOT\n* OpenTopoMap\n* Stamen.Terrain\n* Stamen.Toner\n* Stamen.TonerLight\n\nBing Maps examples:\n```console\n# Display simplified Chinese Bing Maps\nhttp://localhost:8888/?bing_culture=zh-Hans\n\n# Display Spanish Bing Maps\nhttp://localhost:8888/?bing_culture=es-ES\n\n# Specify your own Bing Maps Key and display German maps\nhttp://localhost:8888/?bing_key=\u003cYOUR_BING_KEY\u003e\u0026bing_culture=de-de\n\n# Bing-Maps-Light/French Combo\nhttp://localhost:8888/?default_map=BingMaps.Light\u0026bing_culture=fr-FR\n```\n\nYou should probably get your own key for Bing Maps [here](https://www.microsoft.com/en-us/maps/create-a-bing-maps-key).\n\n## VFR Map Keyboard Shortcuts\n\nThe available keyboard shortcuts for the VFR map are:\n\n* C - Center on Plane\n* F - Follow Plane\n* T - Toggle Fullscreen\n\n## How do I build GoPilot myself?\n\nAssuming you have installed [Go](https://golang.org/dl/) on your machine and cloned or downloaded the repository, you can build \u0026 run GoPilot as follows:\n\nWith [bash](https://gitforwindows.org):\n\n```console\n$ ./scripts/build.sh\n```\n\nOr manually (with bash):\n\n```console\n$ CGO_ENABLED=1 GOOS=windows GOARCH=amd64 go build -o gopilot.exe ./cmd/gopilot/main.go\n```\n\nWithout bash:\n\n```console\n$ ./scripts/build.bat\n```\n\nOr manually (without bash):\n\n```console\nset CGO_ENABLED=1\nset GOOS=windows\nset GOARCH=amd64\ngo build -o gopilot.exe ./cmd/gopilot/main.go\n```\n\n## How do I find my IP address?\n\nLook here for help: [Microsoft Support](https://support.microsoft.com/en-us/windows/find-your-ip-address-f21a9bbc-c582-55cd-35e0-73431160a1b9)\n\nOr open the command prompt and enter:\n```console\n$ ipconfig\n```\n\nipconfig will display all current TCP/IP network configuration values.\\\nThere you are looking for something like this:\n\n```console\nWireless LAN adapter Wi-Fi:\n\n   Connection-specific DNS Suffix  . : wicked.wifi.box\n   IPv4 Address. . . . . . . . . . . : 192.168.11.73\n   Subnet Mask . . . . . . . . . . . : 255.255.255.0\n   Default Gateway . . . . . . . . . : 192.168.11.1\n```\n\nIn this case, *192.168.11.73* would be your local IP address which you can use to connect to from another computer.\n\nSo instead of `http://localhost:8888` you would enter `http://192.168.11.73:8888` in your browser's address bar.\n\n## Where's this SimConnect.dll?\n\nThe SimConnect.dll comes bundled with the GoPilot executable and will be extracted automatically if the DLL cannot be found in the given search paths. Please be aware that this bundled version may not be the latest version of SimConnect.\n\nIf you want/need the latest version of the SimConnect.dll, install the MSFS2020 SDK. Please consult the [Flight Simulator Forums](https://forums.flightsimulator.com/t/how-to-getting-started-with-the-sdk-dev-mode/123241) for further instructions if you want to know how to download and install the SDK.\n\nBy default, the DLL will be located within the directory:\\\n/MSFS SDK/Samples/SimvarWatcher/bin/x64/Release/\n\n## My virus scanner thinks my Go distribution or compiled binary is infected. What the heck?!\n\nFrom the official Golang website https://golang.org/doc/faq#virus:\n\n\"This is a common occurrence, especially on Windows machines, and is almost always a false positive. Commercial virus scanning programs are often confused by the structure of Go binaries, which they don't see as often as those compiled from other languages.\n\nIf you've just installed the Go distribution and the system reports it is infected, that's certainly a mistake. To be really thorough, you can verify the download by comparing the checksum with those on the downloads page.\n\nIn any case, if you believe the report is in error, please report a bug to the supplier of your virus scanner. Maybe in time virus scanners can learn to understand Go programs.\"\n\n## Are there any bugs I should be aware of?\n\nWell. Every program has bugs and I'm pretty sure this one does too. Bugs are annoying and they will fixed with best effort. Report bugs [here](https://github.com/grumpypixel/msfs2020-gopilot/issues).\n\n## I like this but I would like it even more if...\n\nNice. [Tell](https://github.com/grumpypixel/msfs2020-gopilot/issues) me about it.\n\n## This is all bullcrap! I absolutely dislike it!\n\nSame as above. Open a new [issue](https://github.com/grumpypixel/msfs2020-gopilot/issues) and let me know about your feels. Or, alternatively, clone this repo, improve on it and build something fresh and astonishing. This way we can all learn from your creation.\n\n## Help! Please!\n\nIn case you are experiencing any sort of technical issues with the program or if you have awe-inspiring ideas for incredible improvements, please open an [issue](https://github.com/grumpypixel/msfs2020-gopilot/issues).\n\n## Motivation\n\nThere are some really fine VFR maps already available on GitHub like [this](https://github.com/lian/msfs2020-go) and [this](https://github.com/hankhank10/MSFS2020-cockpit-companion). All of them are fabulous and assist well when exploring the virtual flight simulator world. So why build another one?\n\n- I was always missing something when using other VFR maps. Of course, I could've just cloned another project and build \"my stuff\" on top of that but then I probably wouldn't have learned much, which brings me to:\n- I wanted to delve into Golang more intensively.\n- I had the perfect excuse to start up the simulator and shout \"CLEAR PROP!\" out of the window because I needed to test and evaluate newly implemented features.\n- And last but not least and most importantly: Fun-coding. [\"Go will make you love programming again\"](https://twitter.com/golang), they said. \"We [friggin'] promise\", they said. And yes, they were right and kept their promise.\n\n## OurAirports Database\n\nThe underlying airport data was downloaded from [OurAirports.com](https://ourairports.com/data/).\n\n### Terms of use for the data\nFrom OurAirports:\n\n\"DOWNLOAD AND USE AT YOUR OWN RISK! We hereby release all of these files into the [Public Domain](https://en.wikipedia.org/wiki/Public_domain), with no warranty of any kind — By downloading any of these files, you agree that OurAirports.com, Megginson Technologies Ltd., and anyone involved with the web site or company hold no liability for anything that happens when you use the data, including (but not limited to) computer damage, lost revenue, flying into cliffs, or a general feeling of drowsiness that persists more than two days.\n\nDo you agree with the above conditions? If so, then download away!\"\n\n## Shoutouts\n\nA big thank-you goes out to Microsoft and especially to all the peeps at [Asobo](https://www.asobostudio.com) for creating such an awesome simulator/program/game/dillydaller.\n\nBig, hearty thank-yous go out to [Pilot Emilie](https://www.youtube.com/c/Pilotemilie/about) and [Squirrel](https://www.youtube.com/squirrel/about) for their fun and educational videos. And thanks to the whole, supporting Potato Gang.\n\nBig thanks go out to [David Megginson](http://ourairports.com/about.html#credits) and all contributors of OurAirports.com. What an impressive piece of collected awesomeness!\n\nCheers,\\\ngrumpypixel/coffeecookie#884@EDDL\n\nCLEAR PROP!!!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrumpypixel%2Fmsfs2020-gopilot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrumpypixel%2Fmsfs2020-gopilot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrumpypixel%2Fmsfs2020-gopilot/lists"}