将双数组从WPF传递到JavaScript函数,使用GoogleAPI创建多边形
本文关键字:函数 使用 GoogleAPI 多边形 创建 JavaScript 数组 WPF | 更新日期: 2023-09-27 18:12:54
我在使用googleapi绘制多边形时面临问题。它需要传递纬度和经度的双数组。JavaScript函数出错
为了测试,我有两个double类型的数组。值在代码中赋值。
var lats = Array.CreateInstance(typeof(double), 4);
var longs = Array.CreateInstance(typeof(double), 4);
lats.SetValue(25.774252, 0);
lats.SetValue(18.466465, 1);
lats.SetValue(32.321384, 2);
lats.SetValue(25.774252, 3);
longs.SetValue(-80.190262, 0);
longs.SetValue(-66.118292, 1);
longs.SetValue(-64.75737, 2);
longs.SetValue(-80.190262, 3);
currBrowser.InvokeScript("drawPloygon", lats, longs);
然后我调用JavaScript函数名称'drawPolygon'并传递两个单独的数组。这是工作正常,如果我硬编码的trianglecoord在JavaScript函数'drawPolygon'。
function drawPloygon(lats,longs) {
try {
var mapOptions = {
center: new google.maps.LatLng(52.483617, -1.889992),
zoom: 8
};
var map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions)
var length = lats.length;
alert(lats);
alert(longs);
//Define the LatLng coordinates for the polygon's path.
var triangleCoords = [];
for (i = 0; i < length; i++) {
triangleCoords[i] = new google.maps.LatLng(this.javaSerial.Serialize(lats[i]), this.javaSerial.Serialize(longs[i]));
}
}
catch (err) {
alert(err);
}
var bermudaTriangle;
// Construct the polygon.
bermudaTriangle = new google.maps.Polygon({
paths: triangleCoords,
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#FF0000',
fillOpacity: 0.35
});
bermudaTriangle.setMap(map);
}
**下面是硬编码的trianglecoordds数组完美地绘制多边形**
var triangleCoords = [
new google.maps.LatLng(25.774252, -80.190262),
new google.maps.LatLng(18.466465, -66.118292),
new google.maps.LatLng(32.321384, -64.75737),
new google.maps.LatLng(25.774252, -80.190262)
];
任何帮助将不胜感激。由于
使用以下流程:
- 删除
this.javaSerial.Serialize
呼叫 -
定义
length
为两个参数中较短的一个:var length = 0; if(lats.length && longs.length) { length = lats.length > longs.length ? lats.length : longs.length; }