前面使用WPF加载深蓝底图效果;今天再次再Avalonia下玩一下离线的加载深色底图:
1、最初瓦片的下载,开源上随便可以找到:
2、循环遍历文件夹进行深色处理:
3、为了跨平台下咱们使用SkiaSharp来处理:
4、插入到本地的Sqlite数据库中:
RetryPolicy.Execute(() =>
{
using(var db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = connectionString,
DbType = DbType.Sqlite,
IsAutoCloseConnection = true,
}))
{
var tile = new Tile
{
ZoomLevel = zoomLevel,
TileColumn = tileColumn,
TileRow = tileRow,
TileData = imageBytes
};
db.Insertable(tile).ExecuteCommand();
}
});
5、从本地缓存数据库中获取:
public async Task < byte[] > GetTileAsync(int x, int y, int zoom)
{
var tile = await db.Queryable < Tile > ().Where(t => t.zoom_level == zoom && t.tile_column == x && t.tile_row == y).SingleAsync();
return tile ? .tile_data;
}
6、在X86的Linux系统下运行效果:
7、在RK3568下运行效果:
最终简单的效果先这样吧;以后有时间的话,可以再去摸索一下更复杂的效果;编程不息、Bug不止、无Bug、无生活;改bug的冷静、编码的激情、完成后的喜悦、挖坑的激动 、填坑的兴奋;这也许就是屌丝程序员的乐趣吧;今天就到这里吧;希望自己有动力一步一步坚持下去;生命不息,代码不止;大家抽空可以看看今天分享的效果,有好的意见和想法,可以在留言板随意留言;我看到后会第一时间回复大家,多谢大家的一直默默的关注和支持!如果觉得不错,那就伸出您的小手点个赞并关注一下!