From f65b23a1c7394cc3ddcf96360c534a813ec4ca41 Mon Sep 17 00:00:00 2001 From: Oliver Tonnhofer Date: Mon, 15 Jul 2013 11:14:03 +0200 Subject: [PATCH] only expire tiles when way/rel was inserted --- writer/relations.go | 10 +++++++--- writer/ways.go | 9 ++++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/writer/relations.go b/writer/relations.go index 15be944..5e0bf6f 100644 --- a/writer/relations.go +++ b/writer/relations.go @@ -66,9 +66,6 @@ NextRel: continue NextRel } proj.NodesToMerc(m.Way.Nodes) - if rw.expireTiles != nil { - rw.expireTiles.ExpireFromNodes(m.Way.Nodes) - } } // BuildRelation updates r.Members but we need all of them @@ -117,6 +114,13 @@ NextRel: } } } + if rw.expireTiles != nil { + for _, m := range allMembers { + if m.Way != nil { + rw.expireTiles.ExpireFromNodes(m.Way.Nodes) + } + } + } } geos.Destroy(r.Geom.Geom) } diff --git a/writer/ways.go b/writer/ways.go index 99d9858..28f19ce 100644 --- a/writer/ways.go +++ b/writer/ways.go @@ -60,19 +60,22 @@ func (ww *WayWriter) loop() { continue } proj.NodesToMerc(w.Nodes) - if ww.expireTiles != nil { - ww.expireTiles.ExpireFromNodes(w.Nodes) - } + inserted = false if matches := ww.lineStringTagMatcher.Match(&w.Tags); len(matches) > 0 { ww.buildAndInsert(geos, w, matches, geom.LineString) + inserted = true } if w.IsClosed() { if matches := ww.polygonTagMatcher.Match(&w.Tags); len(matches) > 0 { ww.buildAndInsert(geos, w, matches, geom.Polygon) + inserted = true } } + if inserted && ww.expireTiles != nil { + ww.expireTiles.ExpireFromNodes(w.Nodes) + } if ww.diffCache != nil { ww.diffCache.Coords.AddFromWay(w) }