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

语义地图。

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.55/5 (5投票s)

2009年8月1日

GPL3

13分钟阅读

viewsIcon

37839

downloadIcon

1383

一个MediaWiki扩展,允许您插入、编辑、查看和聚合坐标数据

介绍 

Semantic Maps 是一个为 Maps 扩展添加语义功能的扩展,因此提供了通过 Semantic MediaWiki 扩展存储的坐标数据,并能使用多种地图服务进行添加、查看和编辑。这些服务包括 Google MapsOpenLayersYahoo Maps。Semantic Maps 和 Maps 基于 Semantic Google MapsSemantic Layers,并旨在取代这些扩展。要使此扩展正常工作,您需要同时安装 Semantic MediaWikiMaps。有关如何使用 Semantic Maps 的示例,请访问 此处

MapsAndSemanticMaps0

Maps 是一个提供使用多种地图服务(包括 Google MapsOpenLayersYahoo Maps)显示坐标数据,并允许用户对地址进行地理编码的扩展。它可以与 Semantic Maps 一起使用,后者为地图服务增加了语义功能,但也可以在非语义 wiki 上单独使用。Maps 和 Semantic Maps 都基于 Semantic Google MapsSemantic Layers,旨在取代这些扩展。Maps 包含 Google Geocoder 的所有功能,因此也取代了该扩展。有关如何使用 Maps 的示例,请访问 此处

背景 

这些扩展是我今年谷歌夏令营项目开发的。这意味着谷歌支付报酬让我为 Wikimedia Foundation 开发它们。我定期在我的博客上发布关于我开发这些扩展的经历,点击此处查看相关帖子。

下载 

您可以在 遗留下载 部分的 遗留页面 中找到旧版本。

您也可以通过 SVN 直接从 MediaWiki 源代码存储库下载代码,地址为 http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/Maps/。从命令行,您可以执行以下操作

svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/Maps/

Maps and Semantic Maps

Semantic Bundle

Semantic Bundle 目前包含 Maps 和 Semantic Maps 0.2,以及一些其他非常有趣的 Semantic MediaWiki 相关扩展。在此处获取。此处

安装说明

下载代码后,将“Maps”目录放在 MediaWiki 的“extensions”目录下。然后,在安装 Semantic MediaWiki 的那一行之后,将以下代码添加到您的 LocalSettings.php 文件中

# Maps
require_once( "$IP/extensions/Maps/Maps.php" );


要使用 Google MapsYahoo! Maps,您必须输入它们的 API 密钥。您需要在 LocalSettings.php 中,在包含 Maps **之后** 添加它们。

# API keys configuration
$egGoogleMapsKey # Your Google Maps API key. Required for displaying Google Maps, and using the Google Geocoder services.
$egYahooMapsKey # Your Yahoo! Maps API key. Required for displaying Yahoo! Maps.

如果您还没有,您可以在 Google Maps API 页面Yahoo Maps API 页面 获取。请注意,Google Maps API 密钥对于显示地图和地理编码(因此在使用 Yahoo! Map 显示地址时也是必需的)都是必需的。另请注意,Google Maps API 仅在您的网站对公众开放时免费使用;否则需要付费——请阅读 Google Maps 服务条款 以了解更多详情。

成功安装 Maps 后,您可以将您的网站链接添加到“谁在使用 Maps?”部分。 

用法

显示单个点  

Sm-qp-ge-marker-popup-properties.gif

您可以使用 #display_point 解析函数显示带标记的地图。以下代码将在默认地图类型(Google Maps)上,在提供的坐标处显示一个标记。示例

{{#display_point:coordinates=55.7557860, 37.6176330}}

请注意,coordinates 参数是 #display_point 的默认参数。这意味着可以省略参数名,如下所示。

{{#display_point:55.7557860, 37.6176330}}

地理编码

为了更轻松地在地址上显示标记,Maps 中包含了 地理编码 功能。此功能基于 Google Geocoder 扩展,在使用 Maps 之前需要卸载它。您可以使用 #geocode 解析函数对地址进行地理编码。下面的代码将返回莫斯科的坐标。

{{#geocode:Moscow, Russia}}

这可以轻松地嵌套在 #display_point 解析函数中,如下所示。示例

{{ #display_point:coordinates={{#geocode:Moscow, Russia}} }}

为了避免这种嵌套,还可以使用另一个解析函数 #display_address。此解析函数与 #display_point 完全相同,除了参数 address 取代了 coordinates,并自动为您进行地理编码。此代码与前面的示例完全等效。示例

{{#display_address:address=Moscow, Russia}}

请注意,address 参数是 #display_address 的默认参数。这意味着可以省略参数名,如下所示。

{{#display_address:Moscow, Russia}}

地理编码服务

Maps 允许您使用多种地理编码服务。可用的 地理编码服务默认地理编码服务 都是设置,并且可以修改。如果您不想使用默认服务,可以在解析函数中指定。

#geocode 解析函数接受第二个参数,如下所示

{{#geocode:Moscow, Russia|yahoo}}

display_address 也接受此参数,但与 #geocode 中的参数不同,它被命名为:geoservice。

{{#display_address:Moscow, Russia|geoservice=yahoo}}

在某些情况下,默认地理编码服务将被另一个值覆盖。

  • 在 display_address Google Maps 地图中:google 将用作默认值
  • 在 display_address Yahoo! Maps 地图中:yahoo 将用作默认值

这仅覆盖了在解析函数中未提供服务时使用的默认地理编码服务。

法律警告

Google 和 Yahoo! 的地理编码服务都有一个许可证,该许可证*禁止将其用于与各自的地图服务无关的任何目的*,除非您获得书面许可。鼓励您在使用它们之前阅读服务条款(GoogleYahoo!)。

以下示例在大多数情况下都违反了相关许可证

{{
#display_address:
Moscow, Russia
|service=google
|geoservice=yahoo
}}
{{
#display_point:
{{geocode:Moscow, Russia|google}}
|service=yahoo
}} 

显示多个点

Sm-ymap-qp-sattelite.gif

您可以通过设置“format=mapservice”来显示 Semantic MediaWiki #ask 查询的结果,其中“mapservice”是您想使用的地图服务。您可以使用 Maps 的所有 可用地图服务。有关格式的确切名称,请参阅 地图格式列表。查询并显示的属性之一必须是“地理坐标”类型,查询才能工作;此属性将决定地图上每个点的位置。单击每个点将显示一个标签,其中包含页面名称以及任何其他查询到的信息;单击页面名称会将用户带到该页面。地图的缩放级别将是显示所有点的最接近的级别。

由以下代码生成的两个地图将在相同位置有标记,但会使用不同的地图服务。要重现此结果,只需创建一个名为 Locations 的类别,该类别具有“Has coordinates”属性,类型为“Geographic coordinate”。演示示例

{{#ask:[[Category:Locations]]|?Has coordinates|format=map}}

地图服务 

Maps 提供多种地图服务。特定地图的服务可以通过 service 参数设置。如果省略服务,将使用 默认服务。下面的列表包含可用的地图服务。

如果不提供服务,将使用 默认服务

每种服务都有其独特的功能。单击上面的服务名称可查看这些功能的概述。有关通用参数,请参阅下面的列表。

Maps 地图属性

#display_point 和 #display_address 解析函数都接受以下地图属性列表,这些属性可以被修改以更改结果地图的外观和用法。此列表仅包含通用参数,换句话说,是可用于所有地图服务的参数。有关特定参数,请参阅 地图服务

  • coordinates= - (仅限 display_point) 显示标记和地图中心的坐标 - 您可以 设置默认值
  • address= - (仅限 display_address) 显示标记和地图中心的地址
  • width= - 地图的宽度,单位为像素 - 您可以 设置默认值
  • height= - 地图的高度,单位为像素 - 您可以 设置默认值
  • zoom= - 地图的缩放级别 - 您可以 设置默认值
  • centre=center= - 地图中心的坐标。如果未提供,地图将自行以提供的(或默认)坐标/地址为中心。
  • title= - 当单击表示位置的标记时,将在弹出窗口中显示文本。与 label 一起使用时,标题将为粗体并带有下划线。
  • label= - 当单击表示位置的标记时,将在弹出窗口中显示文本。

Yahoo! Map 示例

{{
#display_address:
service=yahoomaps
|address=Moscow, Russia
|zoom=7
|width=800
|height=500
}}

Semantic Maps 地图属性

您可以添加七个附加参数来查询,以更改结果地图的外观和用法。

为了让您更容易,Semantic Maps 在可能的情况下使用与 Maps 相同的名称(请参阅 Maps 的 地图属性)。但存在一些差异。

结果格式

  • coordinates= - (仅限 display_point) 显示标记和地图中心的坐标 - 您可以 设置默认值
  • address= - (仅限 display_address) 显示标记和地图中心的地址
  • width= - 地图的宽度,单位为像素 - 您可以 设置默认值
  • height= - 地图的高度,单位为像素 - 您可以 设置默认值
  • centre=center= - 地图中心的坐标。当未在查询中提供时,地图将自行调整中心以显示所有点。
  • zoom= - 地图的缩放级别。当未在查询中提供时,将默认使用允许显示所有点的最大缩放级别。

这是使用“googlemaps”格式的 #ask 查询示例(查看演示

{{
#ask:
[[Category:Locations]]
|?Has coordinates
|format=googlemaps
|width=800
|height=500
|zoom=8
|autozoom=off
}}

表单输入

  • width= - 地图的宽度,单位为像素 - 您可以 设置默认值
  • height= - 地图的高度,单位为像素 - 您可以 设置默认值
  • zoom= - 地图的缩放级别。如果未提供,则默认显示整个地球 - 您可以 设置默认值
  • centre=center= - 地图中心的坐标。如果未提供,地图将以当前位置为中心(如果尚未设置位置,则以 0,0 坐标为中心)。

查询非坐标数据

Semantic Maps 支持显示查询到的非坐标数据。所有不是坐标的查询属性都将显示在弹出气球中,当您单击表示其相应坐标位置的标记时会显示。如果与某个非坐标值关联了一个页面,该值将链接到该页面。 

表单输入 

Semantic Forms 显示 Google Maps 地图和由 Semantic Maps 的 hook 提供的地理编码功能。 

Semantic Maps 提供多种表单输入。表单输入是 Semantic Forms 的 hook。每种地图服务都有其自己的表单输入。通过 input type 参数确定表单输入类型。

  • input type=map - 将使用 默认地图服务
  • input type=googlemaps - Google Maps 服务。
  • input type=yahoomaps - Yahoo Maps 服务。
  • input type=openlayers - OpenLayers 服务。

每种服务都有其独特的功能。单击上面的服务名称可查看这些功能的概述。有关通用参数,请参阅下面的 地图属性

表单输入中的地理编码位置

此功能仅适用于使用 Google Maps 或 Yahoo! Maps 地图服务的地图。OpenLayers 表单输入不具备此功能。 

Sm-fi-gmaps-earth.gif

设置 

Maps 允许您配置各种设置,从而影响扩展的工作方式。所有设置都位于扩展根目录的 Maps_Settings.php 文件中。您可以通过复制其代码并将其与修改后的值一起放在 Maps 包含 **之后** 的 LocalSettings.php 文件中来修改设置。此处列出了常用设置(影响所有地图服务的设置)。有关特定设置,请参阅 地图服务。请注意,设置文件已记录,应为您提供足够的信息来理解所有设置的工作原理。

可用的地图服务

包含将提供给用户的所有服务的数组。目前 Maps 提供以下服务: googlemapsyahoomapsopenlayers

默认值:$egMapsAvailableServices = array('googlemaps', 'yahoomaps', 'openlayers');

默认地图服务

当用户未提供服务时将使用的默认地图服务。此服务需要启用,否则将采用 可用服务 中的第一个。

默认值:$egMapsDefaultService = 'googlemaps';

可用的地理编码服务

包含将提供给用户的所有地理编码服务的数组。Maps 0.2 支持 2 种地理编码服务:google 和 yahoo。

默认值:$egMapsAvailableGeoServices = array('google', 'yahoo');

默认地理编码服务

当用户未提供服务时将使用的默认地理编码服务。此服务需要启用,否则将采用 可用地理编码服务 中的第一个。

默认值:$egMapsDefaultGeoService = 'google';

默认地图坐标

标记的默认坐标。仅当用户未提供时才使用此值。

默认值:$egMapsMapCoordinates = '1,1';

默认地图宽度

地图的默认宽度。仅当用户未提供时才使用这些值。

默认值:$egMapsMapWidth = 600;

默认地图高度

地图的默认高度。仅当用户未提供时才使用这些值。

默认值:$egMapsMapHeight = 350;

默认地图缩放

地图的默认缩放。仅当用户未提供时才使用此值。每种服务都有其自己的缩放设置。有关更多信息,请参阅 地图服务

版本

Maps 目前版本为 0.2。它仍被认为是 Beta 版,因为可能存在一些问题。但是,它已经经过了相当彻底的测试,应该不会引起任何大的问题。预计在几周内会发布此版本的更新,增加更多功能,修复 bug 并改进整体扩展结构。

计划中的功能

想了解下一版本即将推出的功能吗?未来工作页面 概述了 计划中的功能 以及已 被拒绝的提案

更改日志

此列表仅包含版本及其发布日期。有关所有更改的列表,请查看 遗留页面更改日志 部分。

版本 0.2 (2009-07-29)

版本 0.1 (2009-07-20)

为项目做贡献

Bug 和补丁

如果您发现并修复了一个 bug,请通过转到“Maps”目录并键入以下命令来创建一个补丁:

svn diff >descriptivename.patch

然后将补丁添加到 未来工作页面Bug 部分。Bug 报告也应在此处添加。您也可以将它们发送给 Jeroen De Dauw,jeroendedauw -at- gmail.com,以及 Yaron Koren,yaron57 -at- gmail.com。

功能请求

随时将功能请求添加到 未来工作页面新提案部分

翻译

Maps 的翻译通过 translatewiki.net 进行。此扩展的翻译可以在此处找到。要添加语言值或更改现有值,您应该在 translatewiki.net 上创建一个帐户,然后在此页面上向管理员申请翻译某种语言或多种语言的权限(这是一个非常简单的过程)。此页面。一旦您获得了某种语言的权限,您就可以登录并添加或编辑您想要的该语言的任何消息。

 
© . All rights reserved.