C#WPF WebBrowser-如何将数组传递给javascript函数
我正在尝试向谷歌地图添加多个标记。数据来自C#WPF 以下是C#代码: 以下是嵌入在本地html文件中的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({
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);
}