Webbrowser调用百度地图API的问题

「已注销」 「已注销」 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我们近期在做一个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控件时,花费了很长时间,而且导致内存急剧上升。不知道有木有更好的方法

希望有做过的大师指点,感激不尽!
...全文

相关推荐

评论 3
收藏 已收藏
分享
返回顶部