Map won't show building numbers (tileMill + OSM)

2.9k views Asked by At

i'm using tileMill for creating offline map for my iPhone app, long story short - i've downloaded OSM data for Ukraine region from here. I've checked that online map(from link) is showing building numbers as you can see in picture:

enter image description here

but after importing data, that i've download, to tile mill there's no building numbers:

enter image description here

any idea why this is happening? Thanks!

EDIT: I figure out how to set up house numbers label, but when i'm importing data to tilemill (with this tutorial) i can't find layer that contains house numbers.

Code for setting label for house numbers:

#housenumbers {
  [zoom >= 17] {
    text-name: "[addr:housenumber]";
    text-placement: interior;
    text-min-distance: 1;
    text-wrap-width: 0;
    text-face-name: @book-fonts;
    text-fill: #444;
    text-size: 9;
  }
}

#housenames {
  [zoom >= 17] {
    text-name: "[addr:housename]";
    text-placement: interior;
    text-wrap-width: 20;
    text-face-name: @book-fonts;
    text-size: 8;
    text-fill: #444;
    [zoom >= 18] {
      text-size: 9;
    }
  }
}
3

There are 3 answers

0
MaM On BEST ANSWER

You need to understand, that OSM.org uses a pure rendering engine called Mapnik. Tilemill is a wrapper around Mapnik by simplifying stylesheets.

As @scai say, you need to create a stylesheet that renders a label for housenumbers. I'm not familar with tilemill to tell you what need to be done, but usually this consist of

  • Adding a label symbolizer that looksup the addr:housenumber=* tag and prints the value in a appropriate font and size
  • (creating fake nodes that deal with the placement of that labels within building outlines etc.)
0
constXife On

Layer

Source: PostGIS

Table or subquery

( SELECT way, "addr:housenumber" 
  FROM planet_osm_polygon
  WHERE  "addr:housenumber"  IS NOT NULL
) AS data

Styling

label.mss

#housenumbers[zoom >= 17] {
  ::label {
    text-name: '[addr:housenumber]';
    text-face-name:@sans;
    text-size: 9;   
    text-placement:interior;
    text-min-distance: 1;
    text-wrap-width: 0;
    text-fill: #444;
  }    
}

"::label" is needed for prevent red points on the map.

p.s. for russians, I wrote about it in my blog.

0
user4894848 On

for me it worked with planet_osm_point instead of planet_osm_polygon

( SELECT way, "addr:housenumber" FROM planet_osm_polygon WHERE "addr:housenumber" IS NOT NULL ) AS data