An open API service indexing awesome lists of open source software.

https://github.com/iwpnd/folium-vectorgrid

L.VectorGrid.protobuf plugin for folium to allow vector tile layers to be added to your map.
https://github.com/iwpnd/folium-vectorgrid

folium folium-python mvt vector-tiles

Last synced: 7 months ago
JSON representation

L.VectorGrid.protobuf plugin for folium to allow vector tile layers to be added to your map.

Awesome Lists containing this project

README

          




Folium-VectorGrid


VectorGrid.protobuf plugin for Folium


Report Bug
·
Request Feature

Table of Contents




  1. About The Project



  2. Getting Started


  3. Usage

  4. License

  5. Contact

## About The Project

Now part of folium plugins as of [v0.13.0](https://github.com/python-visualization/folium/releases/tag/v0.13.0).

This library fills a hole in foliums plugin eco-system. Wrapping [Leaflet.VectorGrid](https://github.com/Leaflet/Leaflet.VectorGrid/) into a folium plugin, users can now add vector tile layers (e.g. Mapbox, OpenMapTiles) to their folium maps.

### Built With

- [folium](https://github.com/python-visualization/folium)
- [Leaflet.VectorGrid](https://github.com/Leaflet/Leaflet.VectorGrid)

## Getting Started

### Prerequisite

Install [Poetry](https://python-poetry.org/docs/#installation).

### Installation

#### as dependency

```
poetry add git+https://github.com/iwpnd/folium-vectorgrid.git
```

```
pip install folium-vectorgrid
```

#### local development

1. Clone and install
```sh
git clone https://github.com/iwpnd/folium-vectorgrid.git
poetry install
```
2. Test it!
```sh
poe test # or poetry run pytest .
```

## Usage

```python
from folium_vectorgrid import VectorGridProtobuf
import folium

url = "https://free-{s}.tilehosting.com/data/v3/{z}/{x}/{y}.pbf?token={token}"

m = folium.Map()
options = {
"subdomain": "my_subdomain",
"token": "my_token",
"vectorTileLayerStyles": {
"my_layer":{
"fill": True,
"weight": 1,
"fillColor": 'green',
"color": 'black',
"fillOpacity":0.6,
"opacity":0.6
},
}
}

vc = VectorGridProtobuf(url, "folium_layer_name", options)
m.add_child(vc)
m
```

Or with conditional styling

```python
import folium
from folium_vectorgrid import VectorGridProtobuf

m = folium.Map()
url = "https://free-{s}.tilehosting.com/data/v3/{z}/{x}/{y}.pbf?token={token}"

options = '''{
"subdomain": "tilehosting",
"token": "af6P2G9dztAt1F75x7KYt0Hx2DJR052G",
"vectorTileLayerStyles": {
"my_layer": function(f) {
if (f.type === 'parks') {
return {
"fill": true,
"weight": 1,
"fillColor": 'green',
"color": 'black',
"fillOpacity":0.6,
"opacity":0.6
};
}

if (f.type === 'water') {
return {
"fill": true,
"weight": 1,
"fillColor": 'purple',
"color": 'black',
"fillOpacity":0.6,
"opacity":0.6
};
}
}
}
}'''

VectorGridProtobuf(url,"layer_name",options).add_to(m)
m
```

## License

Distributed under the MIT License. See `LICENSE` for more information.

## Contact

Benjamin Ramser - [@imwithpanda](https://twitter.com/imwithpanda) - ahoi@iwpnd.pw
Project Link: [https://github.com/iwpnd/folium-vector](https://github.com/iwpnd/folium-vectorgrid)