2014-07-14 7 views
1

googleapi를 사용하여 다각형 그리기에 문제가 있습니다. 위도와 경도에 대해 double 배열을 전달해야합니다. JavaScript 함수가 오류를 발생시키고 있습니다.GoogleAPI를 사용하여 WPF에서 JavaScript 함수로 다각형 배열을 전달하여 다각형 만들기

테스트 용으로 두 가지 유형의 배열이 있습니다. 값은 코드에 지정됩니다.

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를 하드 코딩하면 제대로 작동합니다. 완벽하게 wokring

 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

사용하여 다음과 같은 과정 :

var length = 0; 

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

  • 두 PARAMS의 짧은으로 length 정의 this.javaSerial.Serialize 전화
  • 제거