Google 静态地图 API 的 C# 包装器






4.56/5 (24投票s)
如何在 .NET 中使用 Google 静态地图 API。

引言
除非您过去四年一直生活在火星上,否则您很可能知道 Google Maps 及其丰富的 API,Google 的开发人员们提供了这些 API,允许开发人员在全球范围内为大众带来各种巧妙的交互式地图体验。
在 2008 年 2 月,Google 变得低调;它从 Google Maps 中移除了 JavaScript 和高级 API 接口,并引入了 Google 静态地图 API,允许用户将地图生成为常规图像。它仍然可以包含标记和折线,但显示为静态图像,例如 JPEG、GIF 或 PNG。
本文旨在解释如何使用 C# 实现静态图像 API,并提供一个相当直接的包装器。如果您曾使用过 Google Maps API,那么这会很容易。
好的,我明白了,我想在我的网站上使用静态地图。我从哪里开始?
静态 API 使用起来非常、非常简单。首先,您需要一个 来自 Google 的地图 API 密钥。随附演示代码中使用的密钥是用于本地主机的。
您可以通过在 HTML 页面中添加图像来创建静态地图。然后,通过在图像 URL 的查询字符串中指定一系列参数,您可以设置图像大小、位置、缩放级别以及许多其他参数。完整的规范在此。
最简单的情况下,您可以通过在 HTML 页面中添加图像来创建静态地图,只要图像 URL 的查询字符串包含正确的信息,您就可以将地图添加到网站上。
好的,谢谢!我可以走了吗?
呃,不行。使用参数化 URL 添加图像固然好,但在现实世界中(至少在我看来),我真的不想去处理那些查询字符串。那些东西是 1995 年的产物。如果我有一个大型内容管理网站,有 1000 个地理定位点,我不想手动生成所有这些查询字符串信息,这太容易出错了。我需要数据库,我需要地理编码点,我需要结构,事实上,我需要一个 C# 包装器来处理静态地图 API,这样我就可以忘记查询字符串、管道分隔参数以及包含 1000 个错误的图像 URL 了。
Using the Code
静态地图包含两部分:地图图像本身的属性,如大小、缩放级别和位置,以及显示的信息,这是一系列标记和路径(对于您这些地图爱好者来说,就是静态折线)。本文不包含路径,实现方式与添加标记类似。如果有人要求,我可能会在稍后添加。
所以,让我们再次看看带有标记的基本地图。

然后在 .NET 中表示这一点,我们需要一个包含地图的类,其属性定义了图像尺寸、缩放级别、中心点,并且我们需要一个包含标记信息的类(大小、位置、颜色、可选字符)。
这是一个应该涵盖这些内容的类图(我对其进行了一些编辑,以便更好地在屏幕上显示)。

每张地图都有以下属性:
APIKey
– 从 Google 获取,渲染地图时必需Height
: 图像高度(像素)Width
: 图像宽度(像素)LatCenter
: 地图的中心纬度点(“Y”轴)LngCenter
: 中心经度点(“X”轴)Type
: 移动版或路况图。移动版地图通常使用较少的道路线条,并且在相同缩放级别下通常有更多的街道名称。- 一个通用的
Markers
列表。嵌套的Marker
类包含每个标记的信息,例如纬度/经度点、标记大小、颜色和可选的单个字符标识符(如字母或数字)。
标记颜色、大小等属性简单地定义为枚举——如果 Google 以后添加任何颜色或大小,很容易进行扩展。
例如,此代码将创建文章开头显示的图像。
// create new map object
var marker = new StaticMap.Marker();
var map = new StaticMap
{
Width = 175,
Height = 175,
Zoom = 15,
LatCenter = 55.8592110,
LngCenter = -4.2466380
};
// add marker to centre point
marker.Lat = map.LatCenter;
marker.Lng = map.LngCenter;
marker.Size = StaticMap.mSize.Normal;
marker.Color = StaticMap.mColor.Purple;
marker.Character = "1";
map.Markers.Add(marker);
// render map
imgMap.ImageUrl = map.Render();
最终,在调用 Render
方法时,StaticMap
类会将所有属性和标记列表组合起来,生成一个用于生成静态地图的单一参数化 URL。
<img id="ctl00_ContentMain_imgMap"
src"http://maps.google.com/staticmap?center=55.859211,-4.246638&zoom=15&
size=175x175&maptype=roadmap&markers=55.859211,-4.246638,purple1&key="/>
我在可下载的演示中包含了三个示例,应该可以说明如何使用该类。它可以封装到用户控件中,或者集成到更大的 CMS 系统中,用户可以在其中在地图上定位他们的点,并选择标记的颜色和大小。唯一的限制是您的想象力。
总结
静态地图 API 是一种 nice、简单的方式来创建 Google 地图,这些地图可以在不需要完整、交互式、支持 JavaScript 的版本的地方使用。希望这个包装器能让您更容易地将它们添加到自己的项目中,而无需费力处理查询字符串。
历史
- 2008 年 8 月 10 日:初稿
- 2008 年 8 月 14 日:演示项目已更新,包含一个可与 .NET Framework v2.0、Visual Studio 2005 配合使用的解决方案。我不再安装 Visual Studio 2005,因此 2005 解决方案文件可能存在一些问题。但使用正确的框架,该代码可以编译和运行。