使用DeepEarth开发一个地图浏览,加载图片太多时页面很卡

zywhao 2010-01-06 09:46:38
DeepEarth作为开源的控件,使用它可以很方便的在SilverLight开发地图浏览的网站,
因功能需要, 需要在控件中加载大量的图标,大约2万多个,但加载上后,再拖动地图时,页面就会变的很卡...

加载的方法为:
  1. 页面Load时,先创建一个层,并添加到地图上
    GeometryLayer layer = new GeometryLayer(this.map);
  this.map.Layers.Add(this._geolayer);
  2. 从数据库中读出要加载的图标及坐标通过以下方式加载
     foreach (VWShipInfoShortEntity item in list)
{
MyPoint point2 = new MyPoint();

point2.Point = new Point((double)float.Parse(item.Longitude), (double)float.Parse(item.Latitude));

this._geolayer.Add(shape);

}


但加载上之后因为加载的数量太多,页面变的异常卡,拖动地图时也会出现地图先动,新加层的图标再动的现象 ,


请问一下,有什么解决方案可以解决这种卡的问题.
...全文
339 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
baiyun_xu 2010-01-07
  • 打赏
  • 举报
回复
看看是否是好东西
zywhao 2010-01-07
  • 打赏
  • 举报
回复
顺便给出一个deepEarth的样例网站,也可让更多人了解这个开源控件.

控件源码:http://deepearth.codeplex.com/
demo:   http://deepearth.soulsolutions.com.au/
zywhao 2010-01-07
  • 打赏
  • 举报
回复
多谢xingjunli 及各位朋友的热心解答.

合并图片真是一个好办法,但有个问题,当我点击小图片时会弹出这个小图片的信息,若将小图片合并了,那点击小图片触发事件,就作不了了,

xingjunli 2010-01-07
  • 打赏
  • 举报
回复
尝试减少图片数量,将小图片合并可能有助于提高性能
zywhao 2010-01-07
  • 打赏
  • 举报
回复
加载的数据其实不是来自于google,city8等这些站(当然也可以使用),加载的地图是来自于我们自己的服务器,我们地图上的数据是他们没有的.

经过测试发现 ARC GIS、Map Info...对于我们这个不太合适,DeepEarth 还是比较好的.

但就是加载的小图片太多时,拖动时就卡的不行了,,想找一个好点的解决方法
xingjunli 2010-01-07
  • 打赏
  • 举报
回复
LZ在 CITY8 ??
目前这样的应用都是用第三方的东西吧如GOOGLEMAP、ARC GIS、Map Info...
zywhao 2010-01-07
  • 打赏
  • 举报
回复
将坐标变换放集合循环 这个是什么作法,能大体说一下思路,或有相关的文章吗?

第一次开发这种关于地图的东西..


----
城市数据不是购买的,我们自己的
woodyy 2010-01-07
  • 打赏
  • 举报
回复
你那些城市数据是从哪儿来的?公司购买的吗?随便问问。顺便帮顶~
xingjunli 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jv9 的回复:]
每次创建图标都会new一个新的对象实例,在内存中也会被分配新的地址,2万多的图标,光内存就是一个大问题。你可以看一下,当你载入2W多图标后的内存是多少,每次拖动,在客户端是一次新的加载过程,要刷新图像,所以会感觉很卡。

只能适当减少Point,进行测试,例如1W个Point的时候是什么情况,5000的时候。。。得出 一个最好的方案。
[/Quote]
支持,尝试将坐标变换放集合循环 不要频繁new CLR内存销毁会有延时的
zywhao 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jv9 的回复:]
引用 8 楼 zywhao 的回复:
多谢xingjunli 及各位朋友的热心解答.

合并图片真是一个好办法,但有个问题,当我点击小图片时会弹出这个小图片的信息,若将小图片合并了,那点击小图片触发事件,就作不了了,




触发事件和合并有关系么?只是将合并的图片使用共同的一个Event就可以了。
[/Quote]

那应该是我理解有误,合并图片,不是说的将多张图片放在一张上面显示吗?看起来就是一张图片

zywhao 2010-01-07
  • 打赏
  • 举报
回复
没有人可以给出建议了吗?
jv9 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zywhao 的回复:]
多谢xingjunli 及各位朋友的热心解答.

合并图片真是一个好办法,但有个问题,当我点击小图片时会弹出这个小图片的信息,若将小图片合并了,那点击小图片触发事件,就作不了了,


[/Quote]

触发事件和合并有关系么?只是将合并的图片使用共同的一个Event就可以了。
jv9 2010-01-06
  • 打赏
  • 举报
回复
每次创建图标都会new一个新的对象实例,在内存中也会被分配新的地址,2万多的图标,光内存就是一个大问题。你可以看一下,当你载入2W多图标后的内存是多少,每次拖动,在客户端是一次新的加载过程,要刷新图像,所以会感觉很卡。

只能适当减少Point,进行测试,例如1W个Point的时候是什么情况,5000的时候。。。得出 一个最好的方案。

8,757

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧