GMaps v1.1.12 - Google Maps/Routing/StreetView 全能一体






4.85/5 (75投票s)
无需关心 Google Maps/Routing/StreetView 的编程。此控件赋予您的 WinForms 应用程序 Google Maps API v3 的强大功能
引言
我们所有的管理应用程序都包含表格和管理窗体,用于管理公司、客户、供应商、员工等。对于这些实体中的每一个,我们通常会记录大量信息,包括其位置(地址、城市等)。并且考虑到当前地理定位的资源,记录该位置的地理坐标(纬度和经度)通常很有用,有时需要很高的精度。这样我们就可以在地图上看到位置,在地面上查看细节,并计算路线,特别是我们位置与这些实体位置之间的往返路线。此控件帮助我们为所有这些任务实现一个全面的解决方案。
该控件包含一对文件,两者都利用了 Google Maps API v3
- GMaps.dll - 用 VB.NET 编写,可以集成到任何 WinForms 应用程序中。
- GMaps.html – 包含 JavaScript 代码的 HTML 文件,是地图显示任务所必需的,应放置在应用程序启动文件夹中。
要求:最低屏幕分辨率为 1360x768
Notice
问题:此控件已停止正常工作。
自 2015 年 12 月起,Google Maps JavaScript API 应用程序需要身份验证,并且此程序已停止正常工作(在“路线”视图中,“路线”的蓝线和文本路线面板未显示),因为 HTML/JavaScript 文件在 Visual Studio 的 WebBrowser(默认为 Internet Explorer 7 版本)的控制下运行,而这不足以满足要求。
请参阅文章 WebBrowser IE Emulation for Google Maps JavaScript API Key Requirement,该文章通过两种方式自动化了一个解决方案
- 适用于 VB 项目(添加一个类)- 无需 DLL。
- 适用于其他语言(包括 VB)- 需要 DLL。
Using the Code
下载 .ZIP 文件。
该 .ZIP 文件包含 GMaps_Documentation.PDF,其中完整描述了该控件。
控件的源代码和测试项目以 Visual Studio 2008 版本提供,但可升级到更高版本。
控件的 DLL 位于 ...\GMaps_All-in-1\GMaps\bin\Release\GMaps.dll
- 右键单击工具箱区域 -> 选择项… -> 浏览 -> 选择 DLL,将其添加到您的工具箱
- 在解决方案资源管理器中,选择您的项目,打开我的项目 -> 引用 -> 添加… -> 浏览 -> 选择 GMaps
- 将控件(GMaps)从工具箱拖到您的窗体上。给它一个小的尺寸,可以是 0;0
HTML 文件位于 ...\GMaps_All-in-1\GMaps\GMaps.html
- 将其复制到应用程序启动文件夹(IDE 项目或实际应用程序)。
当您启动提供的解决方案时,如果您收到消息“输出类型为类库的项目无法直接启动”,那么,
转到解决方案资源管理器,选择 GMaps_Test 项目,右键单击鼠标并单击 设为启动项
控件的使用
基础
1) 该控件处理 3 种类型的实体/点/标记
- 类型 1 (“MyPlace”) - 所有者的位置、公司、办公室等。可以是路线的起点或终点。
- 类型 2 (“Place2”) - 要管理的实体类型(公司/客户/供应商/员工)。可以是路线的起点或终点。
- 类型 0 (WayPoint) - 最多 8 个地点,用于在路线的起点和终点之间经过。
2) 基本而言,该控件用于将正在处理的实体中的地址元素转换为坐标。这可以在不加载控件的情况下实现,只需调用一个方法。
3) 通过加载控件,并提前(或不提前)用位置元素填充它,可以执行以下操作(跟踪所有位置的定义和调整结果)
- 在地图上查看位置(地图或卫星视图)
- 直观调整任何位置
- 计算两个位置之间的路线,可选择添加途经点
- 查看实体在地面上的位置(街景视图)
- 输入地址元素,并在应用程序窗体之外定义位置
视图
1) Google Maps 视图
查看、编辑和调整位置:“MyPlace”、“Place2”、途经点
拖动标记将更新内部位置表
要添加、编辑或删除位置,请使用详细信息面板
快速调整“Place2”
完成后,快速重新绑定地图
2) 路线视图
在两个点之间绘制路线,包括可能的途经点,并显示文本说明
拖动起点、终点或途经点不会更新内部位置表
要更改路线选项,请使用路线选项面板
在所有情况下,当您选中/取消选中按钮/复选框时,将调用 Directions Service,并重绘地图和路线显示
3) 街景视图
查看“Place2”在地面上的位置
要更改街景视图选项,请使用视角选项面板
在这两种情况下,滑动鼠标指针后,释放鼠标时,视图将重绘
控件属性、方法和事件的简要描述
有关完整描述、语法、示例、结果和技巧,请参阅 GMaps_Documentation.PDF 和 Demo 源代码
属性
MyPlace
- 重定义一个简短描述所有者位置/公司/办公室等的标签Place2
- 重定义一个简短描述要管理的实体类型的标签(公司/客户/供应商/员工)
方法
Clear
- 清除控件中存储的所有位置信息Coord2DMS
- 将坐标从十进制度格式转换为度o 分’ 秒’’ 格式GeoCoding
- 给定一个或多个文本地址元素,返回一个包含地理编码结果的字符串数组
GeoReverse
- 给定纬度和经度,返回一个包含地理编码结果的字符串数组
LoadGMaps
- 将控件传递给 GMaps 的特定实例LoadPlace
- 将一个位置(MyPlace、Place2 或 WayPoint)加载到控件中PrepFullAddr
- 为地理编码目的准备一个字符串
SetCenter
- 覆盖预定义的初始地图中心Str2DSCulture
- 给定一个坐标,将其十进制分隔符(点或逗号)替换为当前文化的十进制分隔符Str2DSDot
- 给定一个坐标,将其十进制分隔符(点或逗号)替换为点
事件
GeoResults
- 在 Google Maps 视图中定义或调整位置时发生,并且地理编码结果状态为“OK”
HTML/Javascript 文件
是地图显示任务所必需的,应放置在应用程序启动文件夹中(IDE 项目或实际应用程序)
使用了 4 个 google.maps 类
Geocoder
– 在 Google Maps 视图中。`AddMarker` 函数接收来自控件内部位置表的数据并创建标记,当调整/拖动标记时,它们会将反馈发送给控件。相关资源:`var` Map1,`div` mapPanel – 100%DirectionsService
/DirectionsRenderer
– 在 Route 视图中。`calcRoute` 函数获取标记的位置,设置路线的起点和终点以及可能的途经点,绘制相应的路线(`var` Map2,`div` routePanel – 69.7%)并根据控件接收的参数写入文本说明(`div` dirPanel – 30%)StreetViewPanorama
– 在 StreetView 视图中。`initStView` 函数获取“Place2”的标记位置,并根据控件接收的参数绘制地图(`var` Map3,`div` sviewPanel – 49.8%)和全景图(`div` panorPanel – 50%)
演示窗体
在 GMaps_Test 项目中提供,用于测试控件的功能。
历史
2014年12月4日 - 首次发布
2016年6月29日 - 注意:将组件放置在工具箱中
如果在(新项目内)右键单击 工具箱 -> 选择项... -> 浏览 (...\...\GMaps.dll
) -> 打开,并且您收到一条消息 [“...\...\Gmaps.dll”中没有可以放置在工具箱中的组件。],那么,
- 使用 文件资源管理器,打开
GMaps.dll
所在的文件夹。 - 拖动
GMaps.dll
并放入您想放置它的工具箱选项卡中。
2016年8月10日 - 问题:此控件已停止正常工作。
请参阅引言中的注意