Webbrowser调用百度地图API的问题
我们近期在做一个CS端的GIS跟踪系统,需要有跟地图交互。
目前用到的做法是,在Winform中使用WebBrowser控件,然后在WebBrowser控件中跟前台写的HTML做交互,HTML里面大部分都是手写的百度地图JS代码。但是现在发现有几个瓶颈,很难解决,希望各位有经验的大神支支招,救命一把。
1. 使用Webbrowser时间久了内存就会急剧上升,而且我们是要求实时刷新地图的,所以这就更要了亲命了。最厉害的情况是平均每秒增加1M内存,用不了多长时间机器就卡的死翘翘了。找了很多国内国外的资料,都没有给出很好的解决方法,最好的方法就是定时重启应用程序,但是这个举措对我们而讲很难接受。另一个折中的方案就是使用SetProcessWorkingSetSize,但是这个也是治标不治本的东西,并且还有可能衍生出更多的问题。当然,内存上升的这么厉害,跟下面这条应该有直接的关系。
2. 因为要在地图上画线,所以要从后台数据库读取一坨儿的坐标数据,大概每条路线几千条坐标的样子,当然,路线长度不一,坐标数量肯定也不一样。将读取到的数据要想办法扔到前台去,然后再画线。
目前的做法是:
A:在HTML页上放置hidden隐藏控件,用来存储坐标数据
B:在后台将数据转换成JSON,赋值到前台的hidden
C:然后执行前台的JS代码,将线画出来
但是,现在由于坐标数据量太大,在调试过程中很明显的能发现在赋值到前台hidden控件时,花费了很长时间,而且导致内存急剧上升。不知道有木有更好的方法
希望有做过的大师指点,感激不尽!
目前用到的做法是,在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控件时,花费了很长时间,而且导致内存急剧上升。不知道有木有更好的方法
希望有做过的大师指点,感激不尽!
...全文
相关推荐
解决VS2010以上版本MFC与Webbrowser百度地图控件API调用及脚本问题
适用于VS2010及以上版本,实现MFC/C++和百度地图控件Webbrowser相互调用问题,上传资源中解决odbccp32.lib报错问题,及脚本报错问题。具体开发可见百度SDK:https://lbsyun.baidu.com/index.php?title=jspopular
Winform调用百度地图接口
一个HTML文件调用了百度地图接口,一个Winform程序调用了该网页,显示地图
winform调用百度地图
winform调用百度地图,实时定位
C#通过经纬度进行定位(百度地图)
采用VS2010中的winform编写的百度地图,通过已知的经纬度进行准确定位,有地图三种模式,并且产生新的位置不会出现多个标记,做定位是很不错的选择
delphi调用百度地图显示标记点
delphi 调用百度地图的API来显示标记点,网上找了半天,没找一个源码例程。参考了网上的代码,整理出一个可供参考的源码例程。有需要的拿去吧。


组件/控件开发
