Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#WPF WebBrowser-如何将数组传递给javascript函数_Javascript_C#_Wpf_Google Maps - Fatal编程技术网

C#WPF WebBrowser-如何将数组传递给javascript函数

C#WPF WebBrowser-如何将数组传递给javascript函数,javascript,c#,wpf,google-maps,Javascript,C#,Wpf,Google Maps,我正在尝试向谷歌地图添加多个标记。数据来自C#WPF 以下是C#代码: 以下是嵌入在本地html文件中的javascript函数: function addMarker(Lat,Long) { for (var i=0;i<Lat.length; i++){ var latLng = new google.maps.LatLng(Lat[i],Long[i]); var marker = new google.maps.Marker({

我正在尝试向谷歌地图添加多个标记。数据来自C#WPF

以下是C#代码:

以下是嵌入在本地html文件中的javascript函数:

function addMarker(Lat,Long) {
    for (var i=0;i<Lat.length; i++){
        var latLng = new google.maps.LatLng(Lat[i],Long[i]);
        var marker = new google.maps.Marker({
            position: latLng,
            title: 'Hello World!',
            map: map
        });
    }
    } // end of addMarker

我对Javascript编程非常陌生。请帮忙。

据我所知,直接传递数组是不可能的

您应该将其作为JSON字符串传递。(我正在使用via NuGet!)

您的JS函数应该如下所示:

function addMarker(jsonArg) {
   var args = JSON.parse(jsonArg);
   for (var i = 0; i < args.Lat.length; i++) {
      var latLng = new google.maps.LatLng(args.Lat[i], args.Long[i]);
      var marker = new google.maps.Marker({
         position: latLng,
         title: 'Hello World!',
         map: map
      });
   }
} // end of addMarker

另一篇有用的帖子:如何从JS代码写入控制台。

从for中删除“var”,这是不需要的。按照您的建议,错误仍然存在。但是这次错误的位置移到了“(”)的左侧。对于(i=0;i检查发送到函数的对象。我认为它的格式与循环执行的方式不同。将
Lat
Log
记录到控制台。JS中的Lat类型显示为“未知”,并带有以下行:alert(typeof(Lat));如何修复?虽然这是一个延迟了很久的答案,但它是正确的。谢谢。
for (var i=0;i<Lat.length; i++){
webBrowser1.InvokeScript("addMarker", new object[] { lat, lon });
guiWebbrowser.InvokeScript("addMarker", JsonConvert.SerializeObject(new
         {
            Lat = new int[] { 10, 20, 30 },
            Long = new int[] { 10, 20, 30 }
         }));
function addMarker(jsonArg) {
   var args = JSON.parse(jsonArg);
   for (var i = 0; i < args.Lat.length; i++) {
      var latLng = new google.maps.LatLng(args.Lat[i], args.Long[i]);
      var marker = new google.maps.Marker({
         position: latLng,
         title: 'Hello World!',
         map: map
      });
   }
} // end of addMarker
public void ModifyBrowserEmulation(int version = 11001)
{
   // see https://stackoverflow.com/a/22287896/3631348 --> edit your application name ! or get it via Reflection !

   var appExe = System.IO.Path.GetFileName(Assembly.GetExecutingAssembly().Location);
   Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", appExe, version, RegistryValueKind.DWord);
   Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", appExe.Replace(".exe", ".vshost.exe"), version, RegistryValueKind.DWord);

   Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", appExe, version, RegistryValueKind.DWord);
   Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", appExe.Replace(".exe", ".vshost.exe"), version, RegistryValueKind.DWord);
}