This is an old revision of the document!
Table of Contents
projects:geo
geo
User Guide
World map of history
World map of geopolitics
Geo Sketch
Credits
Four Tools
These four tools determine the operation of the mouse and of a single finger.
Move - click, tap, or drag to move the map
Point - click, tap, or drag highlight and identify a feature on the map
Sketch - click, tap, or drag to sketch a new feature or edit an existing one
Measure - click or tap twice to measure the distance between two points
You can also move the map by dragging with two fingers, and by using the arrow keys.
Move in Move Mode
drag the mouse or one finger
click or tap to jump to a point
Move in any mode
drag the middle mouse button drag two fingers right, left, up, down arrow keys
Zoom
mouse wheel shift-up and shift-down arrow keys two finger pinch in and out zoomer tool
Rotate the globe on the z-axis
shift-right and shift-up arrow keys
Point
shift-click the mouse
double click double tap
Sketch - drag to draw a shape on the map
Point - click only, highlight and identify an object on the map
Measure - two mouse clicks, measure the distance between the two points
Controls
Zoomer
Time Slider
Globe/Mercator
Search
Where Am I - lower-left corner, lat/long coordinates of mouse
Menus
Main Menu
Tools
Layers
User
Layers
Custom Layers
Developer Guide
Source code: https://gitlab.com/voyc/geo
geo replaces global. Global used the google map api. Geo uses our own javascript, originally copied from the D3 project on github.
Up until June 2026, global cum geo was the home page for voyc.com, and that was thought of as our primary product.
The following is copied from projects:voyc:voyc.txt
Spreadsheets
Test Suite
Todo
Todo Data
sketch_world landmarks sheet: https://docs.google.com/spreadsheets/d/1tGFLZGoImvcf8dj5HsG48Xsm_phn2BYVDNbd-ksg_W8/edit
Cities in India missing. Where is Calcutta? and Delhi?
City population, metro vs municipal. China vs USA.
Todo Features
Todo: proj remove mix from projection and hud (optional) copy projection.js to projector.js, rename everywhere html/js/texture.js - 9 lines html/js/world.js - 39 lines html/geolib/geoiterator.js - 17 lines add 6 buttons, 6 commands globe - orthographic cylinder - looks like a soupcan rectangle - equilinear, looks like a soupcan label unrolled navigation chart - mercator wall chart - aitof petri dish - lambert azimuthal equal-area, see ~/work/blender/earthpetri/heightmap.py fix soupcan add aitof add petri animation from globe → soupcan → equilinear → mercator animation from globe → soupcan → equilinear → aitof animation from globe → petri
Todo: animate movements
fix engine execute OnUpdate
animate spin right
Todo: custom layers, configurable layer list: dev, guest, advanced Todo: sketch, pencil and ink
USB debugging
http vs https
Convert config from php to ini.
Integrate account, add web services, custom layers, single-sign-on
Implement a command-driven architecture using engine.js
- define commands and verbal equivalents
- copy engine.js into jslib
loading
- honor hi res checkbox, don't load tiles if unchecked
- honor lo res checkbox, don't load big.png if unchecked
- add options.lores to geo.js
- add options.loadlog to turn on/off console log tile loading and asset loading
- show loading banner only while loading plus 5 seconds after
Change left sidebar.
- move voyc logo from top to bottom
- Add title “Geo” at the top.
- Change link user guide link to https://curriculum.voyc.com/doku.php?id=projects:geo:geo
Add an Aitoff projection in addition to orthogonal and mercatur.
Add a pencil sketch drawing mode.
Add a drawing mode to draw a great circle on two points. On each of the three projections.
Animate the transition from Mercator to aitoff to globe through soup can and rectangular.
dblayers
- enable hosting.com email server
- for john and sam
- add tester usernames and emails to email server
- John Gregory, America,
- Samuel Johnson, America
- Futoshi Aiki, Tokyo, Japan
- Jaroslav Havel, Prague, Czech Republic
- Hasan Hasan, Jakarta, Java, Indonesia
- Ishak bin Shah, Kuala Lumpur, Malaysia
- Thijs Van Dijk, Amsterdam, Netherlands
- pull all voyc.com email into primary personal email address
- add these same names to geo database user table
- database table layers
- database table userlayers
- webservice to get layer list as json to a js objecct
- software to dynamically compose the layermenu from the js object on each open
Security of personal email
- Get personal email address off of projects already on gitlab.
- Set config for future commits.
- git config –global user.name
- git config –global user.email john@voyc.com
Login to the database of the Geo app and find the usernames and email addresses of the registered users.
Create at least three users One that voice.com one@hagstrand.com and one at yahoo.com
Figure out a way to create a test database and a production database.
Figure out a way to use docker to create a test environment that sets up a reference database from scratch and then runs tests against it and then deletes the whole test environment.
Create the layer table and the user layer table.
Create web services to add delete and update userlayer records.
log into a2hosting.com and check out the email server and figure out how voyc.com mail is served.
Add new users to voyc.com using names stored in rb.txt.
Generate the layer menu HTML from a object.
Keep one object for standard layers and another layer for user layers.
Build test user layer records in the user layer table.
At login call the web service to get the user layer records returned as json and loaded into a JavaScript object.
Todo Bugs
x Main menu, remove link to videos.
x Main menu, change X logo from twitter bird to one downloaded from x-logo.svg downloaded from https://about.x.com/en/who-we-are/brand-toolkit
Allow the layer menu to scroll.
Choose the default layers and settings, establish them at startup, add a Factory Reset button to re-establish those default layers and settings. Consider the following layers.
- grid
- pencil sketch - layer 1
- pencil sketch - layer 2
- pencil sketch - layer 3
- pen final
Add a setting: Layer List, the value choices are streamlined or advanced.
Draw the layer list differently depending on the setting as follows.
- streamlined layer list
- no palettes
- dropdown menu for cover
- hi res,
- lo res,
- fast: oceans, land, cover, desert, mountains
- none
- combine lakes and rivers and deltas
- make viewport always on (only relevant to zoomed out mercator)
- advanced layer list
- keep the cover dropdown, when fast is selected, show layers individually
- implement palette
Temporarily disable and hide the option for hi res.
- The loading… panel will no longer show because we are no longer loading the hi res data.
Fix browser-specific bugs:
- Linux Brave
- zoom control is vertical.
- history control is ok
- Linux Firefox
- zoom control is horizontal.
- history control is missing
- loading panel too small, get text wrap
- cursor coordinates panel too small, get text overflow *
- Android Brave
- history control is too wide, pushes zoom control off screen
- two-fngers down turns on both zoom and tilt.
- two-fingers up does not turn off zoom or tilt. It needs a two finger tap to end zoom mode, so subsequent one-finger moves seem haywire. Maybe we don't want tilt at all. more harm than good. or make it a special option.
- Android Chrome
- bottom row, only layer and projection buttons, no history, no zoom, no cursor coordinates
- two-fingers up works fine
for countries, design a color-coding palette for orgs
- more treaty organizations: brics, asean, ocgfc, global south
- also geo regions
Show the time scrollbar only when a historically relevant layer is active.
ToDo pre 2026
Version History
| v0.1.0 | 2026 Jul 2 | First release |