# MapVas
A **map** can**vas** showing [OSM](https://openstreetmap.org) tiles with drawing functionality.
The repo contains two binaries,
- mapvas: the map window
- mapcat: an equivalent to [cat](<https://en.wikipedia.org/wiki/Cat_(Unix)>) to draw polygons on the map.
## Setup
Make sure you have the nighly Rust toolchain installed.
- [Install Rust](https://rustup.rs).
Manually:
- Clone this repository.
- `cd mapvas ; cargo install --path .`
Via cargo from [crates.io](https://crates.io/crates/mapvas):
- `cargo install mapvas`
## Usage
### mapvas
Start `mapvas` and a map window will appear.

| zoom | Use the mouse wheel or +/- |
| focus to drawn elements | f centers the drawn elements |
| moving | Left mouse and dragging or arrow keys |
| paste | pressing v will paste the clipboard into the grep parser |
| information about element | right click near an element with label will show the label |
### mapcat
Mapcat currently reads only input from stdin and reads it line by line and pipes and uses it using various [parser](https://github.com/UdHo/mapvas/tree/master/src/parser).
It then shows the parsed result on a single instance of mapvas, which it spawns if none is running.
#### Grep (default)
This parser greps for coordinates latitude and longitude as float in a line. In addition it supports colors and filling of polygons.
The input can come from a pipe or read via a file.
```
mapcat <file_with_coordinates>
```
Examples:
- draws a point at Berlin Alexanderplatz:
```
echo "52.521853, 13.413015" | mapcat
```
- draws a line between Berlin and Cologne and a red line between Cologne and Amsterdam:
```
echo "50.942878, 6.957936 52.521853, 13.413015 green\n 50.942878, 6.957936 52.373520, 4.899766 red" | mapcat
```
- draws a yellow polyline Cologne-Berlin-Amsterdam:
```
echo "50.942878, 6.957936 random garbage words 52.521853, 13.413015 yellow spaces after the coordinate-comma is not important: 52.373520,4.899766" | mapcat
```
- draws a blue transparently filled polygon Cologne-Berlin-Amsterdam note that a fill ("transparent" or "solid"):
```
echo "50.942878, 6.957936 52.521853, 13.413015 52.373520,4.899766 blue transparent" | mapcat
```
Filling a polyline causes it to be drawn as closed polygon.
- --invert-coordinates (-i) reverses the order of lat/lon:
```
echo "13.413015, 52.521853" | mapcat -i
```
- clears all elements from the map.
```
The -r parameter clears the map before drawing new elements.
```
- -l defines a label pattern. A near label is shown when right click on the map happens. The label is copied (when shown) via the c key.
The label requires exactly one capture group to be in the pattern.
```