Webbrowser调用百度地图API的问题

qinxiongmao666 2014-05-18 07:36:37
我们近期在做一个CS端的GIS跟踪系统,需要有跟地图交互。
目前用到的做法是,在Winform中使用WebBrowser控件,然后在WebBrowser控件中跟前台写的HTML做交互,HTML里面大部分都是手写的百度地图JS代码。但是现在发现有几个瓶颈,很难解决,希望各位有经验的大神支支招,救命一把。

1. 使用Webbrowser时间久了内存就会急剧上升,而且我们是要求实时刷新地图的,所以这就更要了亲命了。最厉害的情况是平均每秒增加1M内存,用不了多长时间机器就卡的死翘翘了。找了很多国内国外的资料,都没有给出很好的解决方法,最好的方法就是定时重启应用程序,但是这个举措对我们而讲很难接受。另一个折中的方案就是使用SetProcessWorkingSetSize,但是这个也是治标不治本的东西,并且还有可能衍生出更多的问题。当然,内存上升的这么厉害,跟下面这条应该有直接的关系。

2. 因为要在地图上画线,所以要从后台数据库读取一坨儿的坐标数据,大概每条路线几千条坐标的样子,当然,路线长度不一,坐标数量肯定也不一样。将读取到的数据要想办法扔到前台去,然后再画线。
目前的做法是:
A:在HTML页上放置hidden隐藏控件,用来存储坐标数据
B:在后台将数据转换成JSON,赋值到前台的hidden
String strLines = JavaScriptCommon.ConvertSerialize(dtLines);
webMap.SetWebElementValueById("hid_Lines", strLines);

C:然后执行前台的JS代码,将线画出来
 webMap.Document.InvokeScript("ClearTaskLines");
webMap.Document.InvokeScript("DrawTaskLines");

但是,现在由于坐标数据量太大,在调试过程中很明显的能发现在赋值到前台hidden控件时,花费了很长时间,而且导致内存急剧上升。不知道有木有更好的方法

希望有做过的大师指点,感激不尽!
...全文
436 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我所谈的第一点,我只是给你说一下概念而已,没法细说。因为这是非常重要的(决定“生死的”)决策问题,往往被许多编程者忽视。
  • 打赏
  • 举报
回复
地图系统,还是要自己开发“地图服务器”。用web gis只能做点毕业设计之类的。这样拥有一点核心技术,你就摆脱了“那一条独木桥”的尴尬。 关于第二个问题,实际上当需要渲染的数据突然有十几兆时,往往是在后台将地图瓦片与图层相重叠(先用瓦片大小的一小块区域对数据进行剪裁,并画出临时的瓦片),然后才输出到客户端。而且这种瓦片是经过 http 304 或者 ETag 缓存的。 假设你把它拿到客户端渲染,仅页面通讯时间就负担不起。
「已注销」 2014-05-18
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
地图系统,还是要自己开发“地图服务器”。用web gis只能做点毕业设计之类的。这样拥有一点核心技术,你就摆脱了“那一条独木桥”的尴尬。 关于第二个问题,实际上当需要渲染的数据突然有十几兆时,往往是在后台将地图瓦片与图层相重叠(先用瓦片大小的一小块区域对数据进行剪裁,并画出临时的瓦片),然后才输出到客户端。而且这种瓦片是经过 http 304 或者 ETag 缓存的。 假设你把它拿到客户端渲染,仅页面通讯时间就负担不起。
求删除该贴。。。

8,834

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 组件/控件开发
社区管理员
  • 组件/控件开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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