Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add basic support for sprites #238

Open
nvkelso opened this issue Apr 18, 2024 · 5 comments
Open

Add basic support for sprites #238

nvkelso opened this issue Apr 18, 2024 · 5 comments

Comments

@nvkelso
Copy link
Collaborator

nvkelso commented Apr 18, 2024

Description

Adding a basic spritesheet (PNG and JSON config, referenced in the JSON style) would allow town icons and text to pair and collide together avoiding orphan townspot circle symbolizers on the map in the places layer. This would also allow for road shields in the roads layer.

A more advanced option is to add more sprites for the pois layer related to the dozens (and even hundreds) of existing and potential kind values there.

Unlike fonts, icons need to be tied with a map style – if a map style is black and white the icons should also be black and white, if a map style is color than color icons - and tileset major version to allow for additions to kind values.

@nvkelso
Copy link
Collaborator Author

nvkelso commented Apr 18, 2024

The results should be published into https://github.com/protomaps/basemaps-assets repo, but linked to style changes in this main basemaps repo.

@nvkelso
Copy link
Collaborator Author

nvkelso commented Apr 18, 2024

Because many poi layer kind values have the same effective min_zoom, Tilezen uses an additional collision_rank to add a deterministic order for label collisions. Using PlaneTiler we could use the collision rank but reimplement this as a tile based ordering honored by MapLibre (the collision rank property could be dropped once the tile feature ordering is achieved).

@bdon
Copy link
Member

bdon commented Apr 18, 2024

Initial list for tileset v3.6:

pmap:kind: hospital, hotel, library, park, playground, police, post_office, school, stadium, supermarket, university, national_park, forest, station, restaurant, cafe, fast_food, zoo, attraction, fire_station, bank, college, golf_course, military

special icon cases (pmap:kind_detail) with fallback:
restaurant: all fork+knife for now
place_of_worship: christian, muslim, buddhist, hindu, shinto, jewish, taoist, sikh
sport: soccer, tennis, basketball, baseball, swimming, equestrian, golf

townspots, generic shields

todo: airports? different station classes??

@nvkelso
Copy link
Collaborator Author

nvkelso commented Apr 29, 2024

Yes, airport would be great addition to the basic set :)

bdon added a commit that referenced this issue May 8, 2024
* Initial sprite generation code. [#238, #167]

* update townspot themes [#167]

* support 1x and 2x ratios

* pin pmtiles dependency; fix style diffing when changing themes
bdon added a commit that referenced this issue May 9, 2024
* Townspots are rendered as part of the symbol layer and require a theme-specific spritesheet.
* Deployments of basemaps style v3.0.0 requires specifying a sprite MapLibre style property just like fontstacks.
bdon added a commit that referenced this issue May 9, 2024
* Townspots are rendered as part of the symbol layer and require a theme-specific spritesheet.
* Deployments of basemaps style v3.0.0 requires specifying a sprite MapLibre style property just like fontstacks.
@bdon
Copy link
Member

bdon commented May 9, 2024

I'm going to merge styles v3.0.0 with the minimum possible sprites (townspot only) and then make more additions in minor versions.

bdon added a commit that referenced this issue May 10, 2024
* Townspots are rendered as part of the symbol layer and require a theme-specific spritesheet.
* Deployments of basemaps style v3.0.0 requires specifying a sprite MapLibre style property just like fontstacks.
bdon added a commit that referenced this issue May 10, 2024
* Townspots are rendered as part of the symbol layer and require a theme-specific spritesheet.
* Deployments of basemaps style v3.0.0 requires specifying a sprite MapLibre style property just like fontstacks.
bdon added a commit that referenced this issue May 10, 2024
* remove unused city_circle and city_circle_stroke theme variables. [#238]

* styles v3.0.0: Introduce spritesheets [#238, #167]

* Townspots are rendered as part of the symbol layer and require a theme-specific spritesheet.
* Deployments of basemaps style v3.0.0 requires specifying a sprite MapLibre style property just like fontstacks.

* update changelog copy
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants