我想调用javascript的CallBack函数到C#

时间:2016-07-27 06:58:06

标签: javascript c# winforms invokescript

当我插入地址时,程序将返回GPS值。

var callback = new function func1(status, result) {

    if (status === daum.maps.services.Status.OK) {

           var coords = new daum.maps.LatLng(result.addr[0].lat, result.addr[0].lng);

           var marker = new daum.maps.Marker({
              map: map,
              position: coords
           });
           var infowindow = new daum.maps.InfoWindow({
              content: '<div style="width:150px;text-align:center;padding:6px 0;">우리회사</div>'
           });
           infowindow.open(map, marker);

           map.setCenter(coords);
    }
}
geocoder.addr2coord(loc, callback);

和C#:

 try
        {
            string url = "D:/Documents/Visual Studio 2015/Projects/WindowsFormsApplication6/WindowsFormsApplication6\\DaumMapAPI.html";
            webBrowser1.Document.InvokeScript("geocoder.addr2coord", new object[] { "강원도 원주시 학성길 121", ??? });
            webBrowser1.Navigate(url);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

我不知道'???'将被插入。

拜托,帮助我!

1 个答案:

答案 0 :(得分:0)

看着你的Javascript,我觉得

geocoder.addr2coord(loc, callback);

加载页面后立即调用。我想你想要的是另一个包装函数,你可以从C#中调用它(注意新的search()函数:

var callback = new function func1(status, result) {
    if (status === daum.maps.services.Status.OK) {

       var coords = new daum.maps.LatLng(result.addr[0].lat, result.addr[0].lng);

       var marker = new daum.maps.Marker({
          map: map,
          position: coords
       });
       var infowindow = new daum.maps.InfoWindow({
          content: '<div style="width:150px;text-align:center;padding:6px 0;">우리회사</div>'
       });
       infowindow.open(map, marker);

       map.setCenter(coords);
    }
}
function search(loc) {
    geocoder.addr2coord(loc, callback);
}

然后在C#中你可以做你所做的,但改为使用新的search函数。