Giter Club home page Giter Club logo

maki's Introduction

Build Status FOSSA Status

Maki

A pixel-aligned point of interest icon set made for cartographers.

This repo only contains the source SVG files. Check out maki website to use an icon editing tool and read detailed design guidelines.

Format

  • Source icons are in the SVG file format.
  • Icons are available in one size: 15px x 15px
  • Icons should consist only of paths and groups. Paths should only have a d property.
  • Each icon's svg tag should have an id property that corresponds to its filename without the extension. This id property is added automatically as part of a pre-commit hook.

For developers

Maki is ready to be used by developers. Install Maki via NPM:

npm install @mapbox/maki --save

The maki module exports layouts which is an object that can be used to organize and display icons in your app or website. Here's an example usage in Node.js:

const { layouts } = require('@mapbox/maki');
const fs = require('fs');
const path = require('path');

files.forEach(fileName => {
  layouts.forEach(icon => {
    fs.readFile(path.join(__dirname + `./icons/${icon}.svg`), 'utf8', (err, file) => {
      // Read icons as strings in node
      console.log(file);
    });
  });
});

Note about branches

The main branch for the Maki project is main.

The old version of Maki still exists in the mb-pages branch, which must remain intact because a number of old Mapbox projects depend on files it serves from its www/ directory.

Icon requests

Maki welcomes icon requests from people in need of point of interest icons. Open an issue to make a request, and make sure to provide the required information outlined in the issue template.

Maki can't include an icon for everything, so we prioritize only the most common point of interest icons used in mapmaking.

If Maki doesn't have what you're looking for, you may find a suitable icon in one of these other icon repositories:

Workflow for contributing a new Maki icon

Maki also welcomes contributions from designers who need icons for specific points of interest. Check out the design guidelines before opening an issue.

Please follow these steps to contribute to Maki.

1: Create an issue

Open an issue and make sure to provide the required information outlined in the issue template. If your request is for a group of icons, create individual request issues for each icon. This ticket is where all communication and documentation regarding your icon design will occur and reside.

2: Create a branch

create a new branch from the main branch. Name the branch after the icon; for example if you are creating a new ‘garden’ icon, your branch name would be ‘garden’. If the icon request is a group of icons, create one branch for the icon group and name it something succinct and descriptive.

3: Icon design

You are now ready to design your icon. A good place to start is using one of our Illustrator or Inkscape templates, which have the 15 pixel dimensions set and .svg exporting notes. As you design your icon, post drafts to the ticket for feedback. It's recommended to post after every major draft so that at the end, the entire design process has been documented. This documentation will help future designers contribute to Maki.

If you are designing an icon for another individual, all communication between you and the requestor should occur on the ticket as well.

Finalize the icon design before creating a pull request. To reiterate: try and document from start to finish the design process on the ticket.

4: File check & test

Check your file(s) for extraneous anchor points, make sure the file is a single path and double check the .svg file in a text editor. Open the .svg file in the Maki editor to ensure it is compatible, or run npm test to make sure tests are passing. If the icon cannot be opened by the editor or tests are failing, it's most likely an issue with the geometry or unnecessary code such as css in your .svg file(s).

Every icon in Maki must pass the automated tests in tests/maki.test.js. These tests check the following:

  • Filename must end with '.svg'.
  • SVG file cannot contain the following elements: rectangle, circle, ellipse, line, polyline, polygon.
  • SVG file cannot contain transformed groups or paths.
  • Both height and width must equal 15, and height and width must be equal.
  • Height, width, and viewbox must use pixel units.

5: Create a pull request & final review

Create a pull request and if needed, a Maki team member will support you with technical feedback. Make sure to include a link to the relevant ticket in your pull request.

6: Merge to the main branch

After the final review approval, a Maki team member will merge the icon branch to the main branch and close your request ticket.

Releasing

2: Deploying

  1. Move changes from from the headlog to the new version heading
  2. Increment the version key in package.json
  3. Push changes to main
  4. Tag the release in git with git tag -a vX.X.X -m 'Tag release' && git push --tags
  5. Publish your changes to npm with mbx npm publish

2: Update the Maki website

In the maki-icons repository, update the Maki dependency version number in the package.json file.

License

FOSSA Status

maki's People

Contributors

ajashton avatar amyleew avatar ansis avatar bhousel avatar christoph-buente avatar dkniffin avatar emilymdubois avatar ianshward avatar incanus avatar jfirebaugh avatar katydecorah avatar lyzidiamond avatar melanieimfeld avatar natslaughter avatar ryantroyford avatar samanpwbb avatar tatsvc avatar themapsmith avatar tmcw avatar tristen avatar udobnyj avatar vknoppkewetzel avatar williamscraigm avatar willwhite avatar willymaps avatar wrynearson avatar xorgy avatar yhahn avatar yunjieli avatar zachbeattie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

maki's Issues

Icon jumps around in size switcher

The icon jumps around when you choose different sizes, which is distracting from the interesting details that are changing in the icon.

Visibility for arcgis maki package

Maki is now compatible with arcGIS. We should link to the arcGIS packages from the Maki site and mention this in a future MapBox blogpost.

The current map on the Maki site could reveal its source code.

@tristen this is a great idea and I think it'd be a cool way to show rather than tell how to do something like this. Do you have any thoughts on how this should look UI - wise? If not, I'll mock something up. Here's the source code for the icon overlay:

#combinedpoi [zoom >= 15]  {
  [category='Cafe'] {point-file: url(../../maki/cafe-12.png); }
  [category='Fast Food Restaurant'] {point-file: url(../../maki/fast-food-12.png); }
  [category='Restaurant'] {point-file: url(../../maki/restaurant-12.png); }
  [category='Pub'] {point-file: url(../../maki/bar-12.png); }
  [category='Museum'] { point-file: url(../../maki/museum-12.png);}
  [category='Hospital'] { point-file: url(../../maki/hospital-12.png);}
  [category='Cinema'] { point-file: url(../../maki/cinema-12.png);}
  [category='Hotel'] { point-file: url(../../maki/lodging-12.png);}
  [category='Pharmacy'] { point-file: url(../../maki/pharmacy-12.png);}
  [category='Bank'] { point-file: url(../../maki/bank-12.png);}
}

#combinedpoi [zoom >= 17]  {
  [category='Cafe'] {point-file: url(../../maki/cafe-18.png); }
  [category='Fast Food Restaurant'] {point-file: url(../../maki/fast-food-18.png); }
  [category='Restaurant'] {point-file: url(../../maki/restaurant-18.png); }
  [category='Pub'] {point-file: url(../../maki/bar-18.png); }
  [category='Museum'] { point-file: url(../../maki/museum-18.png);}
  [category='Hospital'] { point-file: url(../../maki/hospital-18.png);}
  [category='Cinema'] { point-file: url(../../maki/cinema-18.png);}
  [category='Hotel'] { point-file: url(../../maki/lodging-18.png);}
  [category='Pharmacy'] { point-file: url(../../maki/pharmacy-18.png);}
  [category='Bank'] { point-file: url(../../maki/bank-18.png);}
}

#combinedpoi [zoom >= 18]  {
  [category='Cafe'] {point-file: url(../../maki/cafe-24.png); }
  [category='Fast Food Restaurant'] {point-file: url(../../maki/fast-food-24.png); }
  [category='Restaurant'] {point-file: url(../../maki/restaurant-24.png); }
  [category='Pub'] {point-file: url(../../maki/bar-24.png); }
  [category='Museum'] {point-file: url(../../maki/museum-24.png);}
  [category='Hospital'] { point-file: url(../../maki/hospital-24.png);}
  [category='Cinema'] { point-file: url(../../maki/cinema-24.png);}
  [category='Hotel'] { point-file: url(../../maki/lodging-24.png);}
  [category='Pharmacy'] { point-file: url(../../maki/pharmacy-24.png);}
  [category='Bank'] { point-file: url(../../maki/bank-24.png);}
}

#metroentstructureply [zoom >= 15]  {point-file: url(../../maki/rail-underground-12.png);}
#metroentstructureply [zoom >= 17]  {point-file: url(../../maki/rail-underground-18.png);}

Icon Wishlist

I definitely trend toward looking for illustrations of abstract concepts in 24 pixels. Here are a few of them with which I've been struggling to adapt existing Maki icons:

  • Human population (I actually altered the svg of the runner to make a waving person, but man is it ugly)
  • Government Transparency
  • Government Regulation (Which I ideologically approve of :)
  • Climate Change
  • Agriculture (sheaf of wheat or other specific crop)
  • Farm

Versioning

Maki should establish basic versioning, like 0.0.0 and so on - semver-esque.

Assuming that:

  • 0.x.0: new icon added
  • 0.0.x: bugfixes, modifications
  • 1.0.0: sprite scheme changed or major features added

Extend icons to support more Garmin Custom Symbols for GPS

Great project! Just been through mapping some existing Maki icons to Garmin GPS Custom Symbols. They look pretty good on the GPS given the limitation of using bitmap with only simple transparency - after I converted them from PNG to BMP.

At this stage, this is how I've mapped Maki to the Garmin Custom Symbols:

  • Airport=airport
  • Bank=bank
  • Bar=beer
  • Campground=campsite
  • Cemetery=cemetery
  • Church=religious-christian
  • Civil=town-hall
  • Controlled Area=police
  • Convenience Store=grocery
  • Department Store=shop
  • Fast Food=fast-food
  • Forest=park
  • Gas Station=fuel
  • Golf Course=golf
  • Live Theater=theatre
  • Lodging=lodging
  • Medical Facility=hospital
  • Movie Theater=cinema
  • Museum=museum
  • Park=park2
  • Parking Area=parking
  • Pharmacy=pharmacy
  • Police Station=police
  • Post Office=post
  • Restaurant=restaurant
  • Restricted Area=police
  • School=school
  • Shopping Center=shop
  • Ski Resort=skiing
  • Skiing Area=skiing
  • Stadium=soccer
  • Swimming Area=swimming
  • Zoo=zoo

Some of the icons I'd like to suggest for further development are:

  • Amusement Park (tourism=theme_park)
  • Beach (natural=beach)
  • Bike Trail (bicycle=yes)
  • Boat Ramp (leisure=slipway)
  • Bridge
  • Building (amenity=public_building)
  • Car
  • Crossing
  • Fitness Center
  • Information (tourism=information)
  • Picnic Area (tourism=picnic_site)
  • Radio Beacon (man_made=tower)
  • Residence (building=house)
  • Restroom (amenity=toilets)
  • RV Park
  • Scenic Area (tourism=viewpoint)
  • Stadium (leisure=stadium)
  • Summit (natural=peak)
  • Telephone (amenity=telephone)
  • Toll Booth (barrier=toll_booth)
  • Trail Head
  • Truck
  • Tunnel

unclear bank icon

bank icon is supposed to represent a bank card - but looking at it, people do not seem to recognise it. maybe it can be improved somehow

Reveal name of icon on hover

@tristen, this would be really nice to have, probably not essential for launch:

If it's too difficult to make those tooltips work, just have the label reveal in the top left:

Minefield icon looks like crown

The minefield icon looks like a crown -- it's not obvious that it is intended to signify a minefield.

Perhaps an icon like MS's minesweeper, a bomb icon or skull would be easier to indicate danger/minefield?

Maki Website

The Maki icon set needs a home on the Internet. Goals:

  • Show off the icon set and make it look sexy. Like http://helveticons.ch/ or http://thenounproject.com/ or http://glyphicons.com/
  • Show off continual progress to keep people interested. Some sort of micro blog thing where I post the latest icon makes sense
  • Provide instructions and recommendations for use
  • Provide convenient way to download or reference the icons in maps (until we have a plugin solution figured out: #1 )
  • Help sell TileMill

@tristen when are you free to help me with this site? I'd be great to meet up soon to brainstorm ideas for the site, and then I'll design mock-ups and pass them over to you to build.

Saved .svg state

When I download Maki and open the .svg this is the opening screen.

The saved state should probably be centered and capture the entire canvas.

beer icon

Useful for distinction between pubs & biergartens versus bars & nightclubs.

Potential partnership with Noun Project?

Has anyone with Development Seed looked at having the Maki set part of the Noun Project? Maybe as a featured collection, like their recent Iconothon set. Thoughts?

Background image?

@tristen, I think we should use the landscape background image. I think it holds together the bottom of the page nicely. We could use it as-is, or filter it to be grayscale or do some sort of halftone dot patter effect with it or something if you think it'd be nice to differentiate the page from the rest of the site. How do you feel about this?

Concepting Maki as a TileMill plugin

@samanpwbb @tmcw @yhahn @willwhite @gundersen

As Saman is working on the refresh of the Maki icon set I'm thinking about how to push it in interesting ways and how it could be integrated tightly into TileMill. With the new plugins system, a Maki plugin seems appropriate. Here is a brainstorm of what one approach could look like.

All of the icons are stored as individual black-and-white SVGs in the plugin. Instead of regular file access, would it be possible to get TileMill to serve these dynamically? The reason being you could pass a query string in the URLs indicating what color you'd like the icon to be - the plugin would replace all the black styles in the SVG with the specified color.

This would be especially powerful if it worked with color variables. Perhaps the syntax could be along the lines of this:

@health: #F86;
#health_facilities { 
  [type='hospital'] { point-file: url(http://localhost:20008/maki/big/hospital.svg?@health); }
  [type='pharmacy'] { point-file: url(http://localhost:20008/maki/big/pharmacy.svg?@health); }
  /* etc... */
}

The plugin could also add UI elements to select the icons and colors visually, similar to the font selection tool.

Thoughts? Would this general this general functionality be possible as a plugin?

Odd-center new icons

I was taking a look at some of the new icons and it looks like they are not all odd-centered -- ferry-18 and minefield-* stood out as examples but there may be more.

Maki in ArcGIS: .emf and .style files

Using Maki or any other SVG symbol in an ArcGIS Map Document (MXD) requires converting the file(s) to Enhanced Metafile (EMF) format.

I spent half the day trying to do this conversion... first with ImageMagick, then IrfanView, XnView, NConvert, and finally, Inkscape and svg2emf.

Both svg2emf and Inkscape seem to work equally well, but the outputs were rendered poorly in Microsoft Paint, so it took some time to figure out that the conversion was successful and it's just Microsoft Paint that sucks.

I say all of that to ask... "Would the project maintainers be opposed to adding EMF copies to the repo?" That's the only vector format we can use in ArcMap, and it would have saved me some considerable time to have had EMF versions already in the repo.

If I get a positive response, I'll fork and add the files. Another option is that I can just add conversion instructions to the Wiki and blog about that.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.