检索Google地图路线中的所有地址信息

时间:2012-03-01 04:55:43

标签: html vb.net google-maps-api-3 browser

我正在使用VB.NET开发Windows窗体应用程序,该应用程序允许用户通过Web浏览器在Google地图上查找地址。我还可以成功地向用户显示两点之间的方向,并允许用户随意拖动路线。我现在的问题是 - 我是否可以获得路线的纬度/经度信息,即编码的纬度/经度点的overview_polyline数组,并将其保存到例如我的电脑上有一个文本文件?或者是否可以在路径的整个长度上获取路径两侧的所有地址列表,然后将数据保存到计算机上的文件中?我正在使用HTML文件在Web浏览器项目中访问和显示Google地图数据。

谢谢

1 个答案:

答案 0 :(得分:0)

如果您只是寻找屏幕坐标,这实际上非常简单。

// this probably should be in your form initialization 
this.MouseClick += new MouseEventHandler(MouseClickEvent); 


    void MouseClickEvent(object sender, MouseEventArgs e) 
    { 
        // do whatever you need with e.Location 
    } 

如果您严格在浏览器中查找要点,则需要考虑功能

browser.PointToClient(); 
browser.PointToScreen(); 

所以,如果你确切地知道你的表格在哪里(很容易得到它的坐标)和webbrowser控制的地方(这很容易得到这个,因为它只是你表单中的一个控件),这个方法是可用的,然后,只要您知道左侧或右侧有多少像素,并且从顶部或底部开始显示图像,一旦您获得全局鼠标单击坐标(这很容易),您可以预测它在图像上的点击位置

或者,这里有一些更可怕或更丑陋的方法......

您可以使用ObjectForScripting属性嵌入代码以在Web浏览器中执行此操作。至少可以说是丑陋的。 MSDN在此处提供了有关此过程的一些文档:http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.objectforscripting.aspx

因为它非常难看,也许更好的解决方案是使用AxWebBrowser - 它也很难看,但并不那么可怕。

此外,我发现这篇帖子有人想在pdf文档上做这件事,而MSFT的人说这不可能,但他真正想说的是它不是内置的,即使是pdf文档,如果你使用我描述的第一种方法,它仍然可以在高度到一定精度的情况下进行预测。无论如何,这是帖子:http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/2c41b74a-d140-4533-9009-9fcb382dcb60

然而,这是可能的,并且有几种方法可以做到,所以不要害怕我给你的最后一个链接。

此外,如果您想在javascript中执行此操作可能会有所帮助: http://www.devx.com/tips/Tip/29285

基本上,您可以通过webbrowser控件中提供的方法在图像上添加属性,您可以添加类似onclick =“GetCoords();”的内容。因此,单击它时,JavaScript函数将获取coords,然后您可以使用javascript将值放在隐藏的输入字段(输入类型=“隐藏”)中,您可以通过webbrowser控件添加它,或者如果有一个已经在页面上,你可以使用它。因此,一旦使用javacript将coords放入该输入字段,您就可以使用webbrowser控件轻松获取该值,例如:

webbrowser1.document.getElementById("myHiddenInputField").value

这将获得您通过JavaScript设置的该字段中的值。另外,我提到的“GetCoords()”函数在上面提供的javascript方法链接中称为SetValues()(在devx.com网站中),但我将其命名为GetCoords,因为它更有意义,不想让你迷惑使用他们使用的实际名称,您可以将其更改为您想要的任何名称。这是他们使用的javascript,这只将coords变为变量,不会将其放入隐藏的输入字段,我们还需要另外做这个(在javascript SetValues / GetCoords函数的末尾)。< / p>

function SetValues()
{
var s = 'X=' + window.event.clientX + ' Y=' + window.event.clientY ;
document.getElementById('divCoord').innerText = s;
}

这些家伙只是将它保存在div元素中,这对用户是可见的,但如果你想使用div字段,你可以使div不可见,这样做没有优势或劣势,你只需要使用javascript或css将visible属性设置为false,但是,使用隐藏的输入字段更容易,因此您不需要混淆任何内容。

让我知道你是如何相处的。