2022-03-19 19:32:00 +00:00
<!DOCTYPE html>
< html lang = "en" >
< head >
2023-10-12 01:37:28 +00:00
< script
defer=""
2023-04-16 16:46:36 +00:00
data-domain="nycbookstores.org"
src="https://stats.yetaga.in/js/script.hash.outbound-links.js"
>< / script >
2022-03-19 19:32:00 +00:00
< meta charset = "utf-8" / >
< meta http-equiv = "x-ua-compatible" content = "ie=edge" / >
2022-03-19 15:45:05 +00:00
< title >
Independent Bookstores in New York City - Best Community Bookstores in NYC
< / title >
2022-03-19 19:32:00 +00:00
< meta
name="google-site-verification"
content="hEfog9h0E3JQW91ZUZM5ayPb6DND0WbUa2_W8yTIuVw"
/>
< link rel = "icon" type = "image/png" href = "/img/favicon.png" / >
< link rel = "apple-touch-icon" href = "/img/social.jpg" / >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" / >
2023-03-08 00:54:28 +00:00
< script src = "https://api.mapbox.com/mapbox-gl-js/v2.13.0/mapbox-gl.js" > < / script >
2022-03-19 19:32:00 +00:00
< link
2023-03-08 00:54:28 +00:00
href="https://api.mapbox.com/mapbox-gl-js/v2.13.0/mapbox-gl.css"
2022-03-19 19:32:00 +00:00
rel="stylesheet"
/>
< link
href="https://fonts.googleapis.com/css?family=Acme|Lato& display=swap"
rel="stylesheet"
/>
< link
media="screen"
rel="stylesheet"
type="text/css"
2023-10-30 01:34:26 +00:00
href="/css/site.css?1698627633277"
2022-03-19 19:32:00 +00:00
/>
< meta
property="title"
name="title"
content="Independent Bookstores in New York City - Best Community Bookstores in NYC"
/>
< meta
property="description"
name="description"
content="A guide to and map of every independent bookstore in New York City. We have a complete list of community bookstores in NYC with locations and descriptions."
/>
< meta name = "twitter:card" content = "summary" / >
< meta name = "twitter:site" content = "www.nycbookstores.org" / >
< meta name = "twitter:title" content = "NYC Bookstores" / >
< meta
name="twitter:description"
content="A Guide To The Many Independent Bookstores Of New York City"
/>
< meta
name="twitter:image"
content="https://www.nycbookstores.org/img/social.jpg"
/>
< meta property = "og:url" content = "https://www.nycbookstores.org/" / >
< meta property = "og:title" content = "NYC Bookstores" / >
< meta
property="og:description"
content="A Guide To The Many Independent Bookstores Of New York City"
/>
< meta
property="og:image"
content="https://www.nycbookstores.org/img/social.jpg"
/>
2022-03-19 15:45:05 +00:00
< / head >
< body >
2023-10-30 01:34:26 +00:00
< div id = "map" > < / div >
2017-03-26 22:34:41 +00:00
< div id = "wrapper" >
2023-10-30 01:34:26 +00:00
< header class = "bubble" >
< h1 > NYC Bookstores< / h1 >
2022-03-19 15:45:05 +00:00
< ul class = "nav" >
2023-03-08 00:50:07 +00:00
< li >
< a id = "viewInfo" href = "#info" onclick = "event.preventDefault()"
>intro< /a
>
< / li >
2022-03-19 15:45:05 +00:00
< li >
2022-03-19 19:32:00 +00:00
< a
href="https://git.yetaga.in/alazyreader/nyc-bookstores/"
target="_blank"
2022-03-20 14:26:44 +00:00
>source< /a
2022-03-19 19:32:00 +00:00
>
2022-03-19 15:45:05 +00:00
< / li >
< li >
2023-03-08 01:14:26 +00:00
< a href = "https://icosahedron.website/@lazyreader" target = "_blank"
>@lazyreader< /a
2022-03-19 19:32:00 +00:00
>
2022-03-19 15:45:05 +00:00
< / li >
< / ul >
2023-10-30 01:34:26 +00:00
< / header >
< div id = "info" class = "bubble" >
< p >
New York City loves its independent bookstores. It
< a
href="https://www.nytimes.com/2006/10/15/nyregion/thecity/15book.html"
target="_blank"
>eulogizes those that have faded< /a
>
and celebrates when new ventures are launched. And while the historic
< a
href="https://untappedcities.com/2015/08/26/4th-avenue-the-history-of-nycs-book-row/"
target="_blank"
>Book Row may have passed away in the 80s< /a
>, there are still many indie bookstores dotting the map, across all
five boroughs. Here, I have attempted to collect all of the
currently-open general-interest independent booksellers in NYC. Any
store with regular-ish hours (excluding religious booksellers and
appointment-only rare book sellers) is included.
< / p >
< p >
While Manhattan and Brooklyn still lead the pack, Queens has a
respectable number of stores, and all five boroughs are represented,
with the Bronx and Staten Island both hosting lone independent stores.
Lower Manhattan has the highest density of booksellers.
< / p >
< p >
The listings here are kept up-to-date to the best of my ability;
however, I make no promises about either the accuracy or reliability
of the information. If you spot an error, or I've missed a shop,
please let me know by
< a href = "mailto:delta.mu.alpha@gmail.com" target = "_blank" > email< / a > ,
< a href = "https://icosahedron.website/@lazyreader" target = "_blank"
>mastodon< /a
>, or
< a href = "https://www.twitter.com/alazyreader" target = "_blank"
>twitter< /a
>. Originally based on the "< a
href="https://github.com/jlord/hack-spots"
target="_blank"
>Hack Spots< /a
>" website by
< a href = "https://www.twitter.com/jllord" target = "_blank" > @jllord< / a >
(although I don't believe any of the actual underlying code still
survives at this point).
< / p >
< p >
There are currently < span id = "storeCount" > 114< / span > stores indexed on
this page. Last updated < span id = "updatedOn" > October 29, 2023< / span > .
< / p >
< details >
< summary > Recent Changes< / summary >
< ul id = "changesList" >
< li >
October 26, 2023 - Return Three Lives to its original corner
location.
< / li >
< li >
October 26, 2023 - Idlewild Books appears to have transitioned
entirely to language classes as opposed to bookselling
< / li >
< li >
October 26, 2023 - remove Boulevard Books; correct Alabaster
Bookshop Instagram link
< / li >
< li >
October 26, 2023 - Add Topos Too, currently in a "soft opening"
< / li >
< / ul >
< / details >
2022-03-19 15:45:05 +00:00
< / div >
2017-03-26 22:34:41 +00:00
2023-10-30 01:34:26 +00:00
< div id = "selected" class = "bubble hidden" > < / div >
2022-03-19 15:45:05 +00:00
2023-10-30 01:34:26 +00:00
< div class = "bubble" >
2022-03-19 15:45:05 +00:00
< div id = "Stores" >
2022-03-19 19:32:00 +00:00
< table >
< tbody >
2023-03-07 22:56:58 +00:00
< tr id = "0" class = "spotRow" >
< td class = "name" > 1804 Books< / td >
2023-10-12 01:37:28 +00:00
< td > 320 W 37th St, New York< / td >
2023-03-07 22:56:58 +00:00
< / tr >
< tr id = "1" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > 192 Books< / td >
< td > 192 10th Ave, New York< / td >
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "2" class = "spotRow" >
< td class = "name" > Adanne< / td >
2023-10-30 01:34:26 +00:00
< td > 115 Ralph Ave, Brooklyn< / td >
2023-03-07 22:56:58 +00:00
< / tr >
< tr id = "3" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Aeon Bookstore< / td >
< td > 151 East Broadway, New York< / td >
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "4" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Alabaster Bookshop< / td >
< td > 122 4th Ave, New York< / td >
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "5" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Albertine Books< / td >
< td > 972 Fifth Ave, New York< / td >
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "6" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Archestratus< / td >
2023-10-12 01:37:28 +00:00
< td > 164 Huron St, Brooklyn< / td >
2022-03-19 19:32:00 +00:00
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "7" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Argosy Books< / td >
< td > 116 East 59th St, New York< / td >
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "8" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Astoria Bookshop< / td >
2023-10-12 01:37:28 +00:00
< td > 36-19 30th St, Astoria< / td >
2022-03-19 19:32:00 +00:00
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "9" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Berl's Brooklyn Poetry Shop< / td >
< td > 126A Front St, Brooklyn< / td >
< / tr >
2023-10-12 01:37:28 +00:00
< tr id = "10" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Better Read Than Dead< / td >
< td > 867 Broadway, Brooklyn< / td >
< / tr >
2023-10-12 01:37:28 +00:00
< tr id = "11" class = "spotRow" >
2022-03-20 14:43:25 +00:00
< td class = "name" > Better Read Than Dead & Burly Coffee< / td >
< td > 90 Kosciuszko St, Brooklyn< / td >
< / tr >
2023-10-12 01:37:28 +00:00
< tr id = "12" class = "spotRow" >
< td class = "name" > Black Spring Books< / td >
< td > 672 Driggs Ave, Brooklyn< / td >
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "13" class = "spotRow" >
2022-03-20 14:43:25 +00:00
< td class = "name" > Bluestockings Cooperative< / td >
< td > 116 Suffolk Street, New York< / td >
2022-03-19 19:32:00 +00:00
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "14" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Bonnie Slotnick Cookbooks< / td >
< td > 28 East 2nd St, New York< / td >
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "15" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Book Club Bar< / td >
< td > 197 E 3rd St, New York< / td >
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "16" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Book Culture< / td >
< td > 536 W 112th St, New York< / td >
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "17" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Book Culture LIC< / td >
< td > 26-09 Jackson Ave, Queens< / td >
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "18" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Book Culture on Broadway< / td >
< td > 2915 Broadway, New York< / td >
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "19" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Book Thug Nation< / td >
< td > 100 North 3rd St, Brooklyn< / td >
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "20" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Bookmarc< / td >
< td > 400 Bleecker St, New York< / td >
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "21" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > BookMark Shoppe< / td >
< td > 8415 3rd Avenue, Brooklyn< / td >
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "22" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Bookoff< / td >
< td > 49 W 45nd St, New York< / td >
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "23" class = "spotRow" >
< td class = "name" > Bookoff Brooklyn< / td >
< td > 934 3rd Ave, Brooklyn< / td >
< / tr >
< tr id = "24" class = "spotRow" >
< td class = "name" > Books Are Magic (Montague St.)< / td >
< td > 122 Montague St, Brooklyn< / td >
< / tr >
< tr id = "25" class = "spotRow" >
< td class = "name" > Books Are Magic (Smith St.)< / td >
2022-03-19 19:32:00 +00:00
< td > 225 Smith St, Brooklyn< / td >
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "26" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Books Of Wonder< / td >
< td > 42 West 17th St, New York< / td >
< / tr >
2023-03-07 22:56:58 +00:00
< tr id = "27" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Bravo's Book Nook< / td >
< td > 115 MacDougal St, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "28" class = "spotRow" >
2023-03-07 22:56:58 +00:00
< td class = "name" > Burnt Books< / td >
2023-10-12 01:37:28 +00:00
< td > 157 Huron St, Brooklyn< / td >
2023-03-07 22:56:58 +00:00
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "29" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Cafe con Libros< / td >
< td > 724 Prospect Place, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "30" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Catland< / td >
2023-10-12 01:37:28 +00:00
< td > 985 Flushing Ave, Brooklyn< / td >
2022-03-19 19:32:00 +00:00
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "31" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Chartwell Booksellers< / td >
< td > 55 E 52nd St, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "32" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Codex Books< / td >
< td > 1 Bleecker St, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "33" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Community Bookstore< / td >
< td > 143 7th Ave, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "34" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Cups and Books< / td >
< td > 2024 Bedford Ave, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "35" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Dashwood Books< / td >
< td > 33 Bond St, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "36" class = "spotRow" >
2023-03-07 22:56:58 +00:00
< td class = "name" > Dear Friend Books< / td >
2023-10-12 01:37:28 +00:00
< td > 343A Tompkins Ave, Brooklyn< / td >
2023-03-07 22:56:58 +00:00
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "37" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Desert Island Comics< / td >
< td > 540 Metropolitan Ave, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "38" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > East Village Books< / td >
< td > 99 St. Mark's Place, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "39" class = "spotRow" >
2022-03-20 14:43:25 +00:00
< td class = "name" > ETG Book Cafe< / td >
2022-03-19 19:32:00 +00:00
< td > 208 Bay St, Staten Island< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "40" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Freebird Books< / td >
< td > 123 Columbia St, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "41" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Greenlight Bookstore< / td >
< td > 686 Fulton St, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "42" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Here's A Book Store< / td >
< td > 1964 Coney Island Ave, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "43" class = "spotRow" >
2023-03-07 22:56:58 +00:00
< td class = "name" > Hey Kids! Comics< / td >
< td > 157 Huron St, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "44" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Housing Works Bookstore Café< / td >
< td > 126 Crosby St, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "45" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Human Relations Books< / td >
< td > 1067 Flushing Ave, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "46" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > James Cummins Bookseller< / td >
< td > 699 Madison Ave, 7th Floor, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "47" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Joanne Hendricks Cookbooks< / td >
< td > 488 Greenwich St, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "48" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Karma Bookstore< / td >
< td > 136 East Third St, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "49" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Kew & Willow Books< / td >
< td > 81-63 Lefferts Boulevard, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "50" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Kinokunya< / td >
< td > 1073 Avenue of the Americas, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "51" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Kitchen Arts & Letters< / td >
< td > 1435 Lexington Ave, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "52" class = "spotRow" >
2023-03-07 22:56:58 +00:00
< td class = "name" > Leaves Bookstore< / td >
< td > 140 Nassau Ave, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "53" class = "spotRow" >
2023-03-07 22:56:58 +00:00
< td class = "name" > Left Bank Books< / td >
2023-10-12 01:37:28 +00:00
< td > 41 Perry St, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "54" class = "spotRow" >
2023-10-12 01:37:28 +00:00
< td class = "name" > Lofty Pigeon Books< / td >
< td > 743 Church Ave, Brooklyn< / td >
2023-03-07 22:56:58 +00:00
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "55" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Logos Bookstore< / td >
< td > 1575 York Ave, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "56" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Mast Books< / td >
< td > 72 Avenue A, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "57" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > McNally Jackson Books< / td >
2023-10-12 01:37:28 +00:00
< td > 134 Prince St, New York< / td >
2022-03-19 19:32:00 +00:00
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "58" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > McNally Jackson Books City Point< / td >
< td > 445 Albee Square W, Unit G112, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "59" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > McNally Jackson Books Seaport< / td >
< td > 4 Fulton St, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "60" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > McNally Jackson Books Williamsburg< / td >
< td > 76 North 4th St, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "61" class = "spotRow" >
2023-03-07 22:56:58 +00:00
< td class = "name" > McNally Jackson Rockefeller Center< / td >
< td > 1 Rockefeller Plaza, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "62" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Melville House Publishers< / td >
< td > 46 John St, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "63" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Mercer Street Books & Records< / td >
< td > 206 Mercer St, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "64" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Mil Mundos Books< / td >
< td > 323 Linden St, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "65" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Molasses Books< / td >
< td > 770 Hart St, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "66" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Namaste Bookshop< / td >
< td > 2 W 14th St, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "67" class = "spotRow" >
2023-03-07 22:56:58 +00:00
< td class = "name" > P& T Knitwear< / td >
2023-10-12 01:37:28 +00:00
< td > 180 Orchard St, New York< / td >
2023-03-07 22:56:58 +00:00
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "68" class = "spotRow" >
2023-10-12 01:37:28 +00:00
< td class = "name" > Passageway Books< / td >
< td > 150 9th Ave, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "69" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Pillow-Cat Books< / td >
< td > 328 East 9th St, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "70" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Posman Books Chelsea Market< / td >
< td > 75 9th Avenue, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "71" class = "spotRow" >
2023-03-07 22:56:58 +00:00
< td class = "name" > POWERHOUSE @ IC< / td >
2023-10-12 01:37:28 +00:00
< td > 220 36th St, Building #2, Brooklyn< / td >
2023-03-07 22:56:58 +00:00
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "72" class = "spotRow" >
2023-03-07 22:56:58 +00:00
< td class = "name" > POWERHOUSE Arena< / td >
2022-03-19 19:32:00 +00:00
< td > 28 Adams St, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "73" class = "spotRow" >
2023-03-07 22:56:58 +00:00
< td class = "name" > POWERHOUSE on 8th< / td >
2022-03-19 19:32:00 +00:00
< td > 1111 8th Ave, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "74" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Printed Matter< / td >
< td > 231 11th Ave, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "75" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Printed Matter St. Marks< / td >
< td > 38 St. Marks Pl, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "76" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Quest Bookshop< / td >
< td > 240 E 53rd St, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "77" class = "spotRow" >
2023-03-07 22:56:58 +00:00
< td class = "name" > Quimby's Bookstore< / td >
2023-10-12 01:37:28 +00:00
< td > 536 Metropolitan Ave, Brooklyn< / td >
2023-03-07 22:56:58 +00:00
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "78" class = "spotRow" >
2023-03-07 22:56:58 +00:00
< td class = "name" > Recirculation< / td >
< td > 876 Riverside Dr, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "79" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Respect For Life Books-N-Things< / td >
< td > 537 Nostrand Ave, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "80" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Revolution Books< / td >
< td > 437 Malcolm X Blvd, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "81" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Rizzoli Bookstore< / td >
< td > 1133 Broadway, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "82" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Shakespeare & Company< / td >
< td > 939 Lexington Ave, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "83" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" >
Shakespeare & Company (Upper West Side)
< / td >
< td > 2020 Broadway, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "84" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Sister's Uptown Bookstore< / td >
< td > 1942 Amsterdam Ave, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "85" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Spoonbill & Sugartown, Booksellers< / td >
< td > 218 Bedford Ave, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "86" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Standards Manual< / td >
< td > 212 Franklin Street, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "87" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Strand Bookstore< / td >
< td > 828 Broadway, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "88" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Sweet Pickle Books< / td >
< td > 47 Orchard St, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "89" class = "spotRow" >
2023-10-12 01:37:28 +00:00
< td class = "name" > Taylor & Co. Books< / td >
< td > 1021 Cortelyou Rd, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "90" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Terrace Books< / td >
< td > 242 Prospect Park West, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "91" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > The Austin Book Shop< / td >
< td > 104-29 Jamaica Ave, Richmond Hill< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "92" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > The Book Cellar< / td >
< td > 1465 York Ave, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "93" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > The Center for Fiction< / td >
< td > 15 Lafayette Ave, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "94" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > The Corner Bookstore< / td >
< td > 1313 Madison Ave, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "95" class = "spotRow" >
2023-03-07 22:56:58 +00:00
< td class = "name" > The Drama Book Shop< / td >
< td > 266 W 39th St, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "96" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > The Lit. Bar< / td >
< td > 131 Alexander Ave, Bronx< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "97" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > The Mysterious Bookshop< / td >
< td > 58 Warren St, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "98" class = "spotRow" >
2023-10-12 01:37:28 +00:00
< td class = "name" > The Ripped Bodice< / td >
< td > 218 5th Ave, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "99" class = "spotRow" >
2023-03-07 22:56:58 +00:00
< td class = "name" > The Strand At Columbus Ave< / td >
2023-10-12 01:37:28 +00:00
< td > 450 Columbus Ave, New York< / td >
2023-03-07 22:56:58 +00:00
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "100" class = "spotRow" >
2023-03-07 22:56:58 +00:00
< td class = "name" > The Word Is Change< / td >
2023-10-12 01:37:28 +00:00
< td > 368 Tompkins Ave, Brooklyn< / td >
2023-03-07 22:56:58 +00:00
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "101" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Three Lives & Company< / td >
2023-10-30 01:34:26 +00:00
< td > 154 W 10th St, New York< / td >
2022-03-19 19:32:00 +00:00
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "102" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Topos Bookstore Cafe< / td >
< td > 788 Woodward Ave, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "103" class = "spotRow" >
< td class = "name" > Topos Too< / td >
< td > 59-22 Myrtle Ave, Queens< / td >
< / tr >
< tr id = "104" class = "spotRow" >
2023-03-07 22:56:58 +00:00
< td class = "name" > Troubled Sleep Books< / td >
< td > 129 6th Ave, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "105" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Turn The Page... Again< / td >
< td > 39-15a Bell Blvd, Flushing< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "106" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Unnameable Books< / td >
< td > 600 Vanderbilt Ave, Brooklyn< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "107" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Ursus Books< / td >
< td > 50 East 78th St, Suite 1C, New York< / td >
< / tr >
2023-10-30 01:34:26 +00:00
< tr id = "108" class = "spotRow" >
< td class = "name" > Village Works< / td >
< td > 12 St. Marks Pl, New York< / td >
< / tr >
2023-10-12 01:37:28 +00:00
< tr id = "109" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Westsider Rare & Used Books< / td >
< td > 2246 Broadway, New York< / td >
< / tr >
2023-10-12 01:37:28 +00:00
< tr id = "110" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Westsider Records< / td >
< td > 233 West 72nd St, New York< / td >
< / tr >
2023-10-12 01:37:28 +00:00
< tr id = "111" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Word Bookstore< / td >
< td > 126 Franklin St, Brooklyn< / td >
< / tr >
2023-10-12 01:37:28 +00:00
< tr id = "112" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Word Up Books< / td >
< td > 2113 Amsterdam Ave, New York< / td >
< / tr >
2023-10-12 01:37:28 +00:00
< tr id = "113" class = "spotRow" >
2022-03-19 19:32:00 +00:00
< td class = "name" > Yu and Me Books< / td >
2023-10-12 01:37:28 +00:00
< td > 115 Delancey St Stall #11, New York< / td >
2022-03-19 19:32:00 +00:00
< / tr >
< / tbody >
< / table >
< / div >
2022-03-19 15:45:05 +00:00
< / div >
< / div >
<!-- end wrapper -->
2017-03-26 22:34:41 +00:00
< script >
2022-03-19 15:45:05 +00:00
mapboxgl.accessToken =
"pk.eyJ1IjoiYWxhenlyZWFkZXIiLCJhIjoiY2lucDZhb2JxMHp6MHRxa2pvaTFoOWpuZyJ9.DILGYYxxt7A-A_lHHwp6tQ";
var map = new mapboxgl.Map({
container: "map",
style: "mapbox://styles/mapbox/basic-v9",
2017-03-28 17:06:58 +00:00
center: [-73.957292, 40.729071], // arbitrary center point
2022-03-20 14:26:44 +00:00
zoom: 9,
2017-03-27 02:46:59 +00:00
minZoom: 9,
maxZoom: 17,
2022-03-19 15:45:05 +00:00
dragRotate: false,
});
2016-10-02 21:36:28 +00:00
2022-03-19 15:45:05 +00:00
var popup = new mapboxgl.Popup({
2017-03-26 22:34:41 +00:00
closeOnClick: false,
2022-03-19 15:45:05 +00:00
closeButton: false,
});
2016-10-02 21:36:28 +00:00
2023-03-07 22:56:58 +00:00
function TableViewTemplate(rows) {
table = "< table > ";
rows.forEach((row) => {
table = table + TableRowTemplate(row);
});
return table + "< / table > ";
}
function TableRowTemplate({ rowNumber, name, address, city }) {
return `< tr id = "${rowNumber}" class = "spotRow" >
< td class = "name" > ${name}< / td > < td > ${address}, ${city}< / td >
< / tr > `;
}
function SelectedStoreTemplate({
name,
address,
city,
postcode,
website,
events,
cafe,
description,
}) {
const isAppleIsh = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);
return `
< h2 > ${name}< / h2 >
< p class = "address" > ${address}< / p >
< p > < / p >
< p class = "address" >
${city}, NY ${postcode}
< / p >
< p >
< a
href="https://maps.google.com/maps?q=${encodeURIComponent(
name
)}+${address},${city},NY"
target="_blank"
>Google Maps< /a
>
${
isAppleIsh
? `
< a
href="http://maps.apple.com/?q=${encodeURIComponent(
name
)}& address=${address},${city},NY"
target="_blank"
>Apple Maps< /a
>`
: ""
}
< / p >
2023-10-30 01:34:26 +00:00
${
website
? `< p > < a href = "${website}" target = "_blank" > ${cleanWebsite(
website
)}< / a > < / p > `
: ""
}
2023-03-07 22:56:58 +00:00
${description ? `< p class = "description" > ${description}< / p > ` : ""}`;
}
2023-03-08 00:03:40 +00:00
function hideElementById(id) {
const element = document.getElementById(id);
if (element !== undefined) {
element.classList.add("hidden");
}
}
function showElementById(id) {
const element = document.getElementById(id);
if (element !== undefined) {
element.classList.remove("hidden");
}
}
function setContent(id, html) {
const element = document.getElementById(id);
if (element !== undefined) {
element.innerHTML = html;
}
}
2022-03-19 15:45:05 +00:00
document.addEventListener("DOMContentLoaded", function () {
2023-03-08 00:03:40 +00:00
fetch("./stores.json")
.then((resp) => {
return resp.json();
})
.then((data) => {
data.sort(function (a, b) {
var aname = a.name.toLowerCase();
var bname = b.name.toLowerCase();
return aname === bname ? 0 : +(aname > bname) || -1;
});
data.forEach((value, key) => {
value.rowNumber = key;
value.slug = slugify(value.name);
});
setContent("storeCount", data.length);
window.data = data;
loadMap(data);
})
.catch((err) => {
// we'll live with the static cache!
console.log(err);
2022-03-19 15:45:05 +00:00
});
});
2016-10-02 21:36:28 +00:00
2022-03-19 15:45:05 +00:00
window.addEventListener(
"hashchange",
function (e) {
updateViewBySlug(e.newURL.split("#")[1]);
},
false
);
2017-04-14 01:32:01 +00:00
2022-03-19 15:45:05 +00:00
function updateHash(slug) {
2017-04-14 01:32:01 +00:00
history.pushState(null, null, "#" + slug);
2022-03-19 15:45:05 +00:00
}
2017-04-14 01:32:01 +00:00
2022-03-19 15:45:05 +00:00
function slugify(str) {
2017-04-14 01:32:01 +00:00
return str
2022-03-19 15:45:05 +00:00
.toLowerCase()
.replace(/é/g, "e")
.replace(/& /g, " and ")
.replace(/ /g, "-")
.replace(/[']+/g, "")
.replace(/[^\w-]+/g, "-")
.replace(/-+/g, "-")
.replace(/^-|-$/g, "");
}
2017-04-14 01:32:01 +00:00
2022-03-20 19:40:51 +00:00
function cleanWebsite(str) {
return str
.toLowerCase()
.replace(/^https?:\/\//g, "")
.replace(/^www./g, "")
.replace(/\/$/g, "");
}
2022-03-19 15:45:05 +00:00
function getStoreBySlug(slug) {
2017-04-14 01:32:01 +00:00
var ret = false;
2023-03-08 00:03:40 +00:00
window.data.forEach((value, key) => {
2022-03-19 15:45:05 +00:00
if (value.slug === slug) {
ret = value;
return false;
}
2017-04-14 01:32:01 +00:00
});
return ret;
2022-03-19 15:45:05 +00:00
}
2017-04-14 01:32:01 +00:00
2022-03-19 15:45:05 +00:00
function updateViewBySlug(slug) {
2017-04-14 01:32:01 +00:00
if (slug === "info" || slug === undefined) {
2022-03-19 15:45:05 +00:00
showInfo(false);
2017-04-14 01:32:01 +00:00
} else {
2022-03-19 15:45:05 +00:00
var store = getStoreBySlug(slug);
if (store) {
updateSelectedStore(store, false);
}
2017-04-14 01:32:01 +00:00
}
2022-03-19 15:45:05 +00:00
}
2017-04-14 01:32:01 +00:00
2023-10-30 01:34:26 +00:00
function isStacked() {
return screen.width < 1120 ;
}
2022-03-19 15:45:05 +00:00
function boundingBox(point) {
2017-03-26 22:34:41 +00:00
// add some buffer to a point to give the user some leeway
2022-03-19 15:45:05 +00:00
return [
[point.x - 5, point.y - 5],
[point.x + 5, point.y + 5],
];
}
2017-03-26 22:34:41 +00:00
2022-03-19 15:45:05 +00:00
function updateSelectedStore(store, pushState = false) {
2023-10-30 01:34:26 +00:00
map.flyTo({
center: [store.long, store.lat],
offset: [isStacked() ? 0 : -250, 0],
zoom: 13,
});
2016-10-02 21:36:28 +00:00
2022-03-19 15:45:05 +00:00
popup.setLngLat([store.long, store.lat]).setHTML(store.name).addTo(map);
2017-03-26 22:34:41 +00:00
2023-03-08 00:03:40 +00:00
hideElementById("info");
setContent("selected", SelectedStoreTemplate(store));
showElementById("selected");
2017-04-14 01:32:01 +00:00
if (pushState) {
2022-03-19 15:45:05 +00:00
updateHash(store.slug);
2017-04-14 01:32:01 +00:00
}
2022-03-19 15:45:05 +00:00
}
2016-10-02 21:36:28 +00:00
2022-03-19 15:45:05 +00:00
function showInfo(pushState = true) {
2023-03-08 00:03:40 +00:00
hideElementById("selected");
2017-04-14 01:56:10 +00:00
popup.remove();
2023-03-08 00:03:40 +00:00
showElementById("info");
2017-04-14 01:32:01 +00:00
if (pushState) {
2022-03-19 15:45:05 +00:00
updateHash("info");
2017-04-14 01:32:01 +00:00
}
2022-03-19 15:45:05 +00:00
}
2017-03-26 22:34:41 +00:00
2022-03-19 15:45:05 +00:00
function loadMap(data) {
2017-03-26 22:34:41 +00:00
var points = [];
2023-03-08 00:03:40 +00:00
data.forEach((value, key) => {
2022-03-19 15:45:05 +00:00
points.push({
type: "Feature",
geometry: {
type: "Point",
coordinates: [value.long, value.lat],
},
properties: value,
});
2017-03-26 22:34:41 +00:00
});
2022-03-19 15:45:05 +00:00
map.on("load", function () {
map.addLayer({
id: "stores",
type: "circle",
source: {
type: "geojson",
data: {
type: "FeatureCollection",
features: points,
},
},
paint: {
"circle-radius": 5,
"circle-color": "#B9FCFC",
"circle-stroke-width": 2,
"circle-stroke-color": "#000000",
},
});
map.addControl(new mapboxgl.NavigationControl(), "top-left");
updateViewBySlug(window.location.hash.split("#")[1]);
2017-03-26 22:34:41 +00:00
});
2022-03-19 15:45:05 +00:00
map.on("click", function (e) {
if (!map.getLayer("stores")) {
return;
}
2017-03-26 22:34:41 +00:00
2022-03-19 15:45:05 +00:00
popup.remove();
// Use queryRenderedFeatures to get features at a click event's point
var features = map.queryRenderedFeatures(boundingBox(e.point), {
layers: ["stores"],
});
// fly to the location of the click event
if (features.length) {
var store = features[0];
// Get coordinates from the symbol and center the map on those coordinates
updateSelectedStore(store.properties, true);
}
2017-03-26 22:34:41 +00:00
});
// indicate that the symbols are clickable by changing the cursor style to 'pointer'.
2022-03-19 15:45:05 +00:00
map.on("mousemove", function (e) {
if (!map.getLayer("stores")) {
return;
}
var features = map.queryRenderedFeatures(boundingBox(e.point), {
layers: ["stores"],
});
map.getCanvas().style.cursor = features.length ? "pointer" : "";
2017-03-26 22:34:41 +00:00
});
2023-03-08 00:03:40 +00:00
setContent("Stores", TableViewTemplate(data));
document.querySelectorAll("#Stores tbody tr").forEach((element) => {
element.addEventListener("click", () => {
updateSelectedStore(data[element.id], true);
document
2023-10-30 01:34:26 +00:00
.getElementById(isStacked() ? "map" : "selected")
2023-03-08 00:03:40 +00:00
.scrollIntoView({ behavior: "smooth" });
});
2022-03-20 14:26:44 +00:00
});
2016-10-02 21:36:28 +00:00
2023-03-08 00:03:40 +00:00
document.getElementById("viewInfo").addEventListener("click", showInfo);
2022-03-19 15:45:05 +00:00
}
2017-03-26 22:34:41 +00:00
< / script >
2022-03-19 19:32:00 +00:00
< / body >
< / html >