diff options
author | Stefan Wildemann <gta04@metalstrolche.de> | 2019-07-28 01:10:30 +0200 |
---|---|---|
committer | Stefan Wildemann <gta04@metalstrolche.de> | 2019-07-28 12:33:49 +0200 |
commit | 7661afa5369c6e11da9995b551546fe16a0e0ed7 (patch) | |
tree | 4ca3eaa8b2c777f0a1a73647d956164a14217483 | |
parent | f99e5245364d2b7cf9eb1d6c9ad8a09b263f7498 (diff) | |
download | navit-7661afa5369c6e11da9995b551546fe16a0e0ed7.tar.gz |
Fix coord count on attr_poly_hole. Forward name to multipolygons.
-rw-r--r-- | navit/maptool/osm.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/navit/maptool/osm.c b/navit/maptool/osm.c index 00257129b..166f57e31 100644 --- a/navit/maptool/osm.c +++ b/navit/maptool/osm.c @@ -1623,6 +1623,7 @@ void osm_end_relation(struct maptool_osm *osm) { fprintf(stderr,"relation_type=%s\n", relation_type); if ((!g_strcmp0(relation_type, "multipolygon")) && (!boundary)) { + item_bin_add_attr_string(tmp_item_bin, attr_label, attr_strings[attr_string_label]); item_bin_write(tmp_item_bin, osm->multipolygons); } @@ -1681,6 +1682,8 @@ static void relation_add_tag(char *k, char *v) { } } else if (!g_strcmp0(k,"ISO3166-1") || !g_strcmp0(k,"ISO3166-1:alpha2")) { g_strlcpy(iso_code, v, sizeof(iso_code)); + } else if (! g_strcmp0(k,"name")) { + attr_strings_save(attr_string_label, v); } if (add_tag) { char *tag; @@ -2689,6 +2692,7 @@ static void process_multipolygons_finish(GList *tr, FILE *out) { item_bin_init(ib,multipolygon->rel->type); item_bin_copy_coord(ib,multipolygon->outer[0],1); item_bin_copy_attr(ib,multipolygon->rel,attr_osm_relationid); + item_bin_copy_attr(ib,multipolygon->rel,attr_label); for(a = 0; a < multipolygon->inner_count; a ++) { int hole_len; @@ -2702,6 +2706,9 @@ static void process_multipolygons_finish(GList *tr, FILE *out) { if(id !=NULL) memcpy(&(buffer[used]), id, sizeof(id)); used += sizeof(id); + /* item_bin gives the coordinate count in 32bit values. We want to have it in + * number of coordinates. So divide by 2. Then we can memcopy*/ + multipolygon->inner[a]->clen /= 2; memcpy(&(buffer[used]), &(multipolygon->inner[a]->clen), hole_len - used); item_bin_add_attr_data(ib, attr_poly_hole, buffer, hole_len); } |