前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Avalonia跨平台入门第二十九篇之再玩GIS

Avalonia跨平台入门第二十九篇之再玩GIS

作者头像
WPF程序员
发布2024-03-11 22:27:32
970
发布2024-03-11 22:27:32

无意间翻了翻13年玩耍的BingMap:

1、为了能显示中文地图:

代码语言:javascript
复制
tileLayer = new MapTileLayer();
TileSource tileSource = new TileSource();
tileSource.UriFormat = "http://r2.tiles.ditu.live.com/tiles/r{quadkey}.png?g=41";
// Add the tile overlay to the map layer
tileLayer.TileSource = tileSource;
if (!myMap.Children.Contains(tileLayer))
{
    myMap.Children.Add(tileLayer);
}
tileLayer.Opacity = tileOpacity;

2、AMap继承TileSource重写GetUri:

代码语言:javascript
复制
public override Uri GetUri(int x, int y, int zoomLevel)
{
    string url = string.Format("http://webst01.is.autonavi.com/appmaptile?style=7&x={0}&y={1}&z={2}&lang=zh_cn&size=1&scale=1", x, y, zoomLevel);
    // 返回占位符瓦片的URI
    return new Uri(url, UriKind.Absolute);
}

3、下面才是重点Linux下的GIS效果:

4、先去下载Mapsui

代码语言:javascript
复制
https://github.com/Mapsui/Mapsui

5、平面底图:

代码语言:javascript
复制
string gaodeUrlTemplate = "http://webst01.is.autonavi.com/appmaptile?style=7&x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1";
ITileSource tileSource = new HttpTileSource(new GlobalSphericalMercator(4, 18), gaodeUrlTemplate);
// 创建高德地图瓦片层
var gaodeTileLayer = new TileLayer(tileSource)
{
    Name = "GaodeMap"
};
mapControl.Map.Layers.Insert(0, gaodeTileLayer);

6、卫星底图:

代码语言:javascript
复制
string gaodeUrlTemplate = "http://webst03.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1";

7、路网底图:

代码语言:javascript
复制
gaodeUrlTemplate = "http://wprd02.is.autonavi.com/appmaptile?style=8&x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1"

8、先来个Mark图层:

代码语言:javascript
复制
 // 创建一个图层并将点要素添加到图层中
 MarkLayer = new MemoryLayer
 {
     Name = "MarkLayer",
     //这里必须要写上,不然点了地图,触发不了
     IsMapInfoLayer = true,
 };

9、把MarK添加到图层上:

代码语言:javascript
复制
//创建一个点要素
var pointFeature = new PointFeature(SphericalMercator.FromLonLat(item.Lng, item.Lat).ToMPoint());
CalloutStyle calloutStyle = CreateCalloutStyle(item.Name);
pointFeature.Styles.Add(calloutStyle);
// 为点要素设置一些样式,例如图标
var symbolStyle = new SymbolStyle
{
    SymbolType = SymbolType.Image,
    SymbolScale = 0.15,
    BitmapId = bitmapId,
};
pointFeature.Styles.Add(symbolStyle);
Features.Add(pointFeature);

10、在rk3568板运行的效果:

最终简单的效果先这样吧

;以后有时间的话,可以再去摸索一下更复杂的效果

;编程不息、Bug不止、无Bug、无生活

;改bug的冷静、编码的激情、完成后的喜悦、挖坑的激动 、填坑的兴奋;这也许就是屌丝程序员的乐趣吧;今天就到这里吧;希望自己有动力一步一步坚持下去;生命不息,代码不止;大家抽空可以看看今天分享的效果,有好的意见和想法,可以在留言板随意留言;我看到后会第一时间回复大家,多谢大家的一直默默的关注和支持!如果觉得不错,那就伸出您的小手点个赞并关注一下!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WPF程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档