C#如何向js传递数组
来源:互联网 发布:js导致硬件死机 编辑:程序博客网 时间:2024/05/16 13:05
这两天,就研究怎么把经纬度数据显示在百度地图上,查阅了很多资料,诸多磨难,因为很多网上提供的信息不知道是不是不对还是我不会用,没有解决问题,探索之路记载下来。
1、C# 做的一个界面,想要实现鼠标移动实时显示当前经纬度,采用百度地图,涉及到C#与javascript交互的问题。
基本操作
js代码
// 百度地图API功能 var map = new BMap.Map("allmap"); var point = new BMap.Point(125.2589,43.9077); map.centerAndZoom(point, 8); map.addControl(new BMap.NavigationControl()); // 添加平移缩放控件 map.addControl(new BMap.ScaleControl()); // 添加比例尺控件 map.addControl(new BMap.OverviewMapControl()); //添加缩略地图控件 map.enableScrollWheelZoom(); //启用滚轮放大缩小 // 编写自定义函数,创建标注 function addMarker(point) { var marker = new BMap.Marker(point); map.addOverlay(marker); }//添加监听,获取鼠标移动时地图的经纬度 map.addEventListener("mousemove", showInfo); function showInfo(e) { result1 = e.point.lng ; result2 = e.point.lat ; } function Getlng() { return result1; } function Getlat() { return result2; }
①C#调用js的函数,可以获取js数据
private void btnGetLocation_Click(object sender, EventArgs e) { if (btnGetLocation.Text == "开启实时坐标") { timer.Enabled = true; btnGetLocation.Text = "关闭实时坐标"; } else { btnGetLocation.Text = "开启实时坐标"; timer.Enabled = false; } } private void timer_Tick(object sender, EventArgs e) { var sx = webBrowser2.Document.InvokeScript("Getlng");//引号中是function的函数名,注意变量要用var型 var sy = webBrowser2.Document.InvokeScript("Getlat");//引号中是function的函数名,注意变量要用var型 double dou_lng = Convert.ToDouble(sx);//将var型转换 double dou_lat = Convert.ToDouble(sy);//将var型转换 this.toolStripStatusLabel2.Text = "当前坐标:" + dou_lng.ToString("F5") + "," + dou_lat.ToString("F5"); }
C#想要获取JS数据,可以采取函数返回值的方式
webBrowser2.Document.InvokeScript(“Getlng”);
②C#数组传递给js
有一系列经纬度点,怎么传给js然后显示呢
网上找到这个方法,使用window.external.C#函数名();
js代码
var total_num = window.external.getRowsNumber();
C# 代码
int Rows_Num ; public int getRowsNumber() { return Rows_Num; }
但是好像没有作用,希望有人能告知一二。
对于js的这段向地图添加标注,点聚合的代码
// 随机向地图添加标注 function DrawRandomPoint(num) { var bounds = map.getBounds(); var sw = bounds.getSouthWest(); var ne = bounds.getNorthEast(); var lngSpan = Math.abs(sw.lng - ne.lng); var latSpan = Math.abs(ne.lat - sw.lat); var markers = []; // var num = window.external.getNumber(); // var num = <%=_Num%>;//网页空白??? // var num ="<%=_Num%>"; for (var i = 0; i < num; i ++) { var pt = new BMap.Point(sw.lng + lngSpan * (Math.random() * 0.7), ne.lat - latSpan * (Math.random() * 0.7)); addMarker(pt); markers.push(new BMap.Marker(pt)); } //最简单的用法,生成一个marker数组,然后调用markerClusterer类即可。 var markerClusterer = new BMapLib.MarkerClusterer(map, {markers:markers}); }
ps:
MarkerClusterer:多标注聚合器。此工具解决加载大量点要素到地图上造成缓慢,且产生覆盖现象的问题
对于var markerClusterer = new BMapLib.MarkerClusterer(map, {markers:markers});需要其起作用,还必须在js中添加这段代码
<script type="text/javascript" src="http://api.map.baidu.com/library/TextIconOverlay/1.2/src/TextIconOverlay_min.js"></script> <script type="text/javascript" src="http://api.map.baidu.com/library/MarkerClusterer/1.2/src/MarkerClusterer_min.js"></script>
详见http://lbsyun.baidu.com/index.php?title=jspopular/guide/conflux
这个num的赋值,在C#中下面两种方法都可以实现
webBrowser2.Document.InvokeScript("DrawRandomPoint", new object[] {100 });//直接数字webBrowser2.Document.InvokeScript("DrawRandomPoint", new object[] {Rows_Num });//参数
然而 ,下面这三种办法都不行,不知道C#如何向js传值
// var num = window.external.getNumber();// var num = <%=_Num%>;//网页空白???// var num ="<%=_Num%>";
C#数组如何向js传值呢,网上搜索找到了虎鲸数据管理平台,好不容易填好了表、字段
按照其提供的数据模板,数据上传也总是出粗。心又凉了半截
现在还有一个方法,就是不传递数组,既然我能以参数形式传递数据,那么我就在C#采用循环的方式,一个经纬度一个经纬度的方式进行传值,然后在地图上显示,这个方法很笨,但是我也想不出别的方法了。
js代码
function DrawSinglePoint(inputLon,inputLat) { var pt = new BMap.Point(inputLon,inputLat); addMarker(pt); }
C#代码
for (int i = 0; i <= 2 * Rows_Num - 1; i+=2) { webBrowser2.Document.InvokeScript("DrawSinglePoint", new object[] { pointArr[i], pointArr[i + 1] }); }
- C#如何向js传递数组
- c#向MATLAB传递字符串数组
- JSP 向 js 中传递数组
- php向js函数传递数组
- C++如何向函数传递数组
- js jsp 交互 js与jsp的数据交互 js向jsp中传递数据 jsp向js中传递数据 js向jsp传递数组
- servlet通过xhr向js传递二进制字节数组
- 向函数传递数组
- js 函数中如何传递数组参数
- 如何从ActiveX控件向JavaScript传递数组
- 如何向sql server存储过程传递一个数组
- C#如何调用批处理文件 C#如何向批处理文件传递多个参数
- android 向JS传递数组为什么得到的不是数组呢?
- 向页面传递数组参数
- php向javascript传递数组
- 向函数传递二维数组
- C++向Lua传递数组
- Shell 向函数传递 数组
- Java json字符串转json对象
- 接口测试理论
- String与StringBuffer,StringBuilder的区别
- Linux strace 命令
- nginx tomcat 区别
- C#如何向js传递数组
- 随机数游戏
- ABAP开发中常用的两个F4搜索帮助函数的区别
- 基于ROS和安卓手机的IMU参数的通信软件
- HALCON仿射变换基础
- Postman Tests中设置环境变量,结果转json数值失去精度
- VMware Fusion 8.0.0 for Mac序列号(亲测可用)
- Linux 创建用户和工作组
- HTML基础知识笔记总结20171117