int *end;
enum attr_type attr_last;
int label;
- int *label_attr[2];
+ int *label_attr[4];
struct map_selection *sel;
struct map_priv *m;
struct item item;
type=le32_to_cpu(t->pos_attr[0]);
if (type == attr_label)
mr->label=1;
- if (type == attr_town_name)
+ if (type == attr_house_number)
mr->label_attr[0]=t->pos_attr;
if (type == attr_street_name)
- mr->label_attr[0]=t->pos_attr;
- if (type == attr_street_name_systematic)
mr->label_attr[1]=t->pos_attr;
+ if (type == attr_street_name_systematic)
+ mr->label_attr[2]=t->pos_attr;
+ if (type == attr_town_name)
+ mr->label_attr[3]=t->pos_attr;
if (type == attr_type || attr_type == attr_any) {
if (attr_type == attr_any) {
dbg(1,"pos %p attr %s size %d\n", t->pos_attr-1, attr_to_name(type), size);
</itemgra>
</layer>
<layer name="labels">
+ <itemgra item_types="house_number" order="15-">
+ <circle color="#000000" radius="3" text_size="7"/>
+ </itemgra>
<itemgra item_types="town_label,district_label,town_label_0e0,town_label_1e0,town_label_2e0,town_label_5e0,town_label_1e1,town_label_2e1,town_label_5e1,town_label_1e2,town_label_2e2,town_label_5e2,district_label_0e0,district_label_1e0,district_label_2e0,district_label_5e0,district_label_1e1,district_label_2e1,district_label_5e1,district_label_1e2,district_label_2e2,district_label_5e2" order="12-">
<circle color="#000000" radius="3" text_size="7"/>
</itemgra>
static char *attrmap={
"n *=* point_unkn\n"
"n Annehmlichkeit=Hochsitz poi_hunting_stand\n"
+#ifdef HOUSE_NUMBERS
+ "n addr:housenumber=* house_number\n"
+#endif
"n aeroway=aerodrome poi_airport\n"
"n aeroway=airport poi_airport\n"
"n aeroway=helipad poi_heliport\n"
"n tourism=viewpoint poi_viewpoint\n"
"n tourism=zoo poi_zoo\n"
"w *=* street_unkn\n"
+#ifdef HOUSE_NUMBERS
+ "w addr:interpolation=even house_number_interpolation_even\n"
+ "w addr:interpolation=odd house_number_interpolation_odd\n"
+ "w addr:interpolation=all house_number_interpolation_all\n"
+ "w addr:interpolation=alphabetic house_number_interpolation_alphabetic\n"
+#endif
"w aerialway=cable_car lift_cable_car\n"
"w aerialway=chair_lift lift_chair\n"
"w aerialway=drag_lift lift_drag\n"
};
char label_attr_buffer[BUFFER_SIZE];
+#ifdef HOUSE_NUMBERS
+struct attr_bin house_number_attr = {
+ 0, attr_house_number
+};
+char house_number_attr_buffer[BUFFER_SIZE];
+#endif
+
+
struct attr_bin town_name_attr = {
0, attr_town_name
};
0, attr_street_name
};
+#ifdef HOUSE_NUMBERS
+char street_name_attr_buffer[BUFFER_SIZE];
+#endif
+
struct attr_bin street_name_systematic_attr = {
0, attr_street_name_systematic
};
pad_text_attr(&label_attr, label_attr_buffer);
level=5;
}
+#ifdef HOUSE_NUMBERS
+ if (! strcmp(k,"addr:housenumber")) {
+ strcpy(house_number_attr_buffer, v);
+ pad_text_attr(&house_number_attr, house_number_attr_buffer);
+ }
+ if (! strcmp(k,"addr:street")) {
+ strcpy(street_name_attr_buffer, v);
+ pad_text_attr(&street_name_attr, street_name_attr_buffer);
+ }
+#endif
if (! strcmp(k,"ref")) {
if (in_way) {
strcpy(street_name_systematic_attr_buffer, v);
nodeid=id;
item.type=type_point_unkn;
label_attr.len=0;
+#ifdef HOUSE_NUMBERS
+ house_number_attr.len=0;
+ street_name_attr.len=0;
+#endif
town_name_attr.len=0;
debug_attr.len=0;
is_in_buffer[0]='\0';
coord_count=0;
item.type=type_street_unkn;
label_attr.len=0;
+#ifdef HOUSE_NUMBERS
+ house_number_attr.len=0;
+#endif
street_name_attr.len=0;
street_name_systematic_attr.len=0;
debug_attr.len=0;
alen+=label_attr.len+1;
if (debug_attr.len)
alen+=debug_attr.len+1;
+#ifdef HOUSE_NUMBERS
+ if (house_number_attr.len)
+ alen+=house_number_attr.len+1;
+ if (street_name_attr.len)
+ alen+=street_name_attr.len+1;
+#endif
if (count)
item.type=types[0];
else
write_attr(out, &town_name_attr, label_attr_buffer);
} else
write_attr(out, &label_attr, label_attr_buffer);
+#ifdef HOUSE_NUMBERS
+ write_attr(out, &house_number_attr, house_number_attr_buffer);
+ write_attr(out, &street_name_attr, street_name_attr_buffer);
+#endif
write_attr(out, &debug_attr, debug_attr_buffer);
#ifdef GENERATE_INDEX
if (item_is_town(item) && town_name_attr.len) {
phase1_db(dbstr,ways,nodes);
else
#endif
- printf("map_handle=%p\n", map_handle);
if (map_handle) {
phase1_map(map_handle,ways,nodes);
map_destroy(map_handle);