6

几个月前,我构建了一个 Winform 应用程序,用于安排维修技术人员的预约。我想通过在客户表单上添加客户地址的地图来更新应用程序,然后将该地图打印在技术人员离开办公室时的报告上。

我一直在环顾四周,但我还没有找到一个好的解决方案。

我目前有客户的地址。我想做的是将地址提交到流行的在线地图站点之一,并获取该地区的小地图。我几乎可以使用谷歌地图使用他们的嵌入式链接功能来做到这一点。将地址添加到他们的网站后,我可以获得以下 HTML:

<iframe width="300" height="300" frameborder="0" scrolling="no" 
   marginheight="0" marginwidth="0" 
   src="http://maps.google.com/maps?hl=en&amp;ie=UTF8&amp;t=h&amp;g=1193+Presque+Isle+Dr,+Port+Charlotte,+FL+33952&amp;s=AARTsJqsWtjYwJ7ucpVS6UU2EInkRk6JLA&amp;ll=27.012108,-82.087955&amp;spn=0.005735,0.006437&amp;z=16&amp;output=embed">
</iframe>

我的第一个计划是简单地解析这个 HTML 并在这个地址中插入需要的客户地址,然后在表单上的浏览器对象中显示结果。但是,如果我更改上述 iframe 中的地址,Google 会给我一条“您的客户无权获取 URL ...”的消息。

我对最终使用的地图服务没有偏好,重要的是该解决方案不能有相关的费用,并且可以从 Windows 表单中使用。

有人对如何解决这个问题有想法/建议/资源吗?

结果

我最终使用了此处找到的控件。我发现它是一个“好的”解决方案......由于代码无法按原样工作,因此开始工作很乏味。我很惊讶地发现没有一个流行的地图 API 支持 winforms。

4

3 回答 3

1

一些用于开发地图查看器控件的示例代码(注意:我怀疑这完全在他们的许可范围内)

否则,根据您的预算,您可以使用MapPoint ActiveX 控件

于 2009-01-08T16:34:30.337 回答
1

直接使用 src="" 中的值作为 WebBrowser 控件的位置,无需 IFRAME。

或者

构建一个包装 IFRAME 的最小 html 文档,将其写入 MemoryStream,重新搜索到开始处,然后使用 MemoryStream 设置 WebBrowser 控件的 DocumentStream 属性。

私服

于 2010-06-08T19:25:46.570 回答
0

Google Maps 和 Live Maps 都有一个公共 api。

由于您正在使用 winforms,因此我可能会使用实时地图。

http://dev.live.com/VirtualEarth/

CodePlex 上有几个例子。

http://codeplex.com/Project/ProjectDirectory.aspx?TagName=Virtual%20Earth

于 2009-01-08T16:00:04.587 回答