我正在尝试向Google地图添加多个标记。数据来自C#WPF。
这是C#代码:
private void Button_click(object sender, RoutedEventArgs e)
{
int[] lat = { 10, 30, 50, 70 };
int[] lon = { 10, 30, 50, 70 };
webBrowser1.InvokeScript("addMarker", new object[] { lat, lon });
}
这是嵌入本地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
当我使用VS 2015编译该程序并单击按钮以调用此js脚本时,总是收到一条错误消息,告诉我在'var'之后该行中应有一个函数
for (var i=0;i<Lat.length; i++){
VS的异常报告是这样的:
HRESULT中的System.Runtime.InteropServices.COMException异常:0x80020101
异常的位置就在这里:
webBrowser1.InvokeScript("addMarker", new object[] { lat, lon });
我对Java编程非常陌生。请帮忙。
参考方案
据我所知,不可能直接传递数组。
您应该将其作为JSON字符串传递。 (我正在通过NuGet使用NewtonSoft!)
guiWebbrowser.InvokeScript("addMarker", JsonConvert.SerializeObject(new
{
Lat = new int[] { 10, 20, 30 },
Long = new int[] { 10, 20, 30 }
}));
您的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
您可能会收到以下错误消息:JSON is undefined
。
看到这样的答案:https://stackoverflow.com/a/22287896/3631348
您应该在应用程序中的任何位置调用此函数:
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);
}
另一篇有用的文章:https://stackoverflow.com/a/31728506/3631348如何从您的JS代码写入控制台。
如何以编程方式获取网页中图像的渲染尺寸? - javascript我需要询问网页中的每个img标签,并以其呈现的形式找到其高度和宽度。不是实际的物理图像尺寸。我需要在WinForm应用程序的C#中执行此操作。例:http://motherboard.vice.com/read/i-built-a-botnet-that-could-destroy-spotify-with-fake-listens主图像的物理尺寸为3648…
Javascript-从当前网址中删除查询字符串 - javascript单击提交按钮后,我需要从网址中删除查询字符串值。我可以用jQuery做到这一点吗?当前网址:siteUrl/page.php?key=value 页面提交后:siteUrl/page.php 实际上,我已经从另一个带有查询字符串的页面着陆到当前页面。我需要在页面首次加载时查询字符串值以预填充一些详细信息。但是,一旦我提交了表格,我就需要删除查询字符串值。我已…
Mongo汇总 - javascript我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": …
JavaScript中的字符串评估函数 - javascriptJavaScript中是否有任何内置函数,例如Python中的eval内置函数?注意:eval函数将方程式作为字符串并返回结果。例如,假设变量x为2,则eval("2x+5")返回9。 参考方案 是的,JavaScript中也有eval函数。此外,该声明应有效用于评估,即eval("2*x+5"…
如何在JQuery中操作JSONArray - javascript我有一个php函数,它以JSON返回此代码{"0":{"title":"Dans l\u2019appartement"},"1":{"title":"A l\u2019a\u00e9roport - D\u00e9part de B\u00e9at…