2014-07-14 30 views
1

我在使用googleapi繪製多邊形時遇到問題。哪些需要傳遞經緯度的雙數組。 JavaScript函數發生錯誤。從WPF向JavaScript函數傳遞double數組以創建使用GoogleAPI的多邊形

爲了測試pupose我有兩個類型的數組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) 
     ]; 

任何幫助將不勝感激。由於

回答

0

使用以下步驟:

  • 刪除this.javaSerial.Serialize電話
  • 定義length作爲兩個參數的較短:

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