繁体   English   中英

从WPF到JavaScript函数传递双精度数组以使用GoogleAPI创建多边形

[英]Passing double array from WPF to JavaScript function to create polygon using GoogleAPI

我在使用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”,并传递两个单独的数组。 如果我在JavaScript函数'drawPolygon'中对TriangleCoords进行硬编码,这将正常工作。

       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);
    }

**以下是硬编码的TriangleCoords数组,可以完美地绘制多边形**

        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; } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM