65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.85/5 (75投票s)

2014年12月4日

CPOL

6分钟阅读

viewsIcon

140019

downloadIcon

9522

无需关心 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.PDFDemo 源代码

属性

  • 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日 - 问题:此控件已停止正常工作

请参阅引言中的注意

© . All rights reserved.