将双数组从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)
        ];

任何帮助将不胜感激。由于

将双数组从WPF传递到JavaScript函数,使用GoogleAPI创建多边形

使用以下流程:

  • 删除this.javaSerial.Serialize呼叫
  • 定义length为两个参数中较短的一个:

    var length = 0;
    if(lats.length && longs.length)
      {
      length = lats.length > longs.length ? lats.length : longs.length;
      }