1
0
forked from MTSR/mapserver

65 lines
1.2 KiB
Go
Raw Normal View History

2019-01-24 15:56:37 +01:00
package tilerendererjob
import (
"mapserver/app"
"mapserver/coords"
"mapserver/mapblockparser"
"strconv"
2019-01-24 20:55:20 +01:00
"github.com/sirupsen/logrus"
2019-01-24 15:56:37 +01:00
)
func getTileKey(tc *coords.TileCoords) string {
2019-02-08 08:11:06 +01:00
return strconv.Itoa(tc.X) + "/" + strconv.Itoa(tc.Y) + "/" +
strconv.Itoa(tc.Zoom) + "/" + strconv.Itoa(tc.LayerId)
2019-01-24 15:56:37 +01:00
}
func renderMapblocks(ctx *app.App, jobs chan *coords.TileCoords, mblist []*mapblockparser.MapBlock) int {
tileRenderedMap := make(map[string]bool)
tilecount := 0
2019-02-08 14:25:07 +01:00
totalRenderedMapblocks.Add(float64(len(mblist)))
2019-01-24 15:56:37 +01:00
2019-01-26 10:35:33 +01:00
for i := 12; i >= 1; i-- {
for _, mb := range mblist {
//13
2019-02-14 19:59:35 +01:00
fields := logrus.Fields{
"pos": mb.Pos,
}
logrus.WithFields(fields).Debug("Tile render job part")
2019-01-26 10:35:33 +01:00
tc := coords.GetTileCoordsFromMapBlock(mb.Pos, ctx.Config.Layers)
2019-02-14 19:59:35 +01:00
if tc == nil {
panic("mapblock outside of layer!")
}
fields = logrus.Fields{
"X": tc.X,
"Y": tc.Y,
"Zoom": tc.Zoom,
"LayerId": tc.LayerId,
}
logrus.WithFields(fields).Debug("Tile render job part")
2019-01-26 10:35:33 +01:00
//12-1
tc = tc.ZoomOut(13 - i)
key := getTileKey(tc)
if tileRenderedMap[key] {
continue
}
tileRenderedMap[key] = true
tilecount++
2019-01-24 20:55:20 +01:00
//dispatch re-render
2019-01-24 15:56:37 +01:00
jobs <- tc
}
}
return tilecount
}