维基行:如何使用动态地图
- 另请参阅:维基行:如何绘制静态地图、维基行:动态地图探险
需要一张动态更新的地图,当列表被添加、更新或删除时?本页将告诉你如何做到。
嵌入动态地图
将{{Mapframe}} 模板放在您希望嵌入的地图出现的位置。默认情况下,它会显示在页面的右侧。通常应将其放置在“交通”标题正下方,以便离后续列表不太远。
语法是:
{{Mapframe|纬度 |经度 |zoom=缩放级别 |height=高 |width=宽 |staticmap=图片文件 |align=对齐}}
一些说明:
- 纬度是十进制度数(2到5位小数),例如6.78或23.54321。
- 经度是十进制度数(2到5位小数)。
- 不要在坐标前加上 lat= 和 long= 这样的词,尽管您在列表模板中可能会这样做,因为在 Mapframe 中不起作用。
- zz 是一个介于1到18之间的数字,指定了地图在页面上初始显示的放大或缩放级别(之后读者可以自行调整)。对于城镇地图,缩放级别13到15通常是合适的。可选 - 默认为14。
- 如果(纬度、经度)和缩放级别被省略,单独使用{{mapframe}} 现在将默认以适合当前文章所有兴趣点(POI)的比例和位置显示地图。这些默认值通常已足够。
- nnn 是嵌入式地图在页面上显示的像素宽度和高度。可选 - 默认为420像素。
- 图片文件是可选的,用于显示静态地图图像的普通png或svg文件名。可选 - 如果指定,地图框架的下角会显示一个带有文本“查看静态地图”的链接。
- 对齐是地图框架的对齐方式。可选 - 默认为右对齐(其他值是“左”和“无”(居中))。
- group 是一个额外的参数,可以指定要在地图上显示的标记(列表、景点、活动、购物、餐饮、住宿)的类型。
- name 是另一个附加参数,用于定义地图下方的非默认标题。这通常有助于删除标题中的消歧义词。
当文章中的兴趣点(PoI)的每个列表都设置了 lat 和 long 属性时,这些图标将自动出现在嵌入的动态地图上,并按递增顺序编号、着色。
地图不够详细?
您可能发现您尝试添加地图的区域细节不够,只有一条孤零零的主干道,而现实中却有多条。这意味着基础地图数据不足,您需要前往OpenStreetMap,使用他们的iD 编辑器或JOSM等其他编辑器。要添加道路和建筑,请在卫星图像上描摹。如果道路没有命名,请命名它们。
如果您觉得麻烦,可以在维基行:动态地图探险或维基行:地图请求处提出,可能会有人来为您补充OpenStreetMap的细节。
地理模板

您可能注意到了屏幕顶部有一个
小地图图标,它链接到文章所涵盖区域的大地图。没有?使用GeoMap,并在左侧选择Geo选项来填写{{geo}}模板,可能看起来像这样:{{geo|1.3421|129.0122|zoom=14}}。数字标记城市或地区的中心,而缩放数字决定了地图的比例。1覆盖整个地球,18则标记城市街区级别。
添加图片

可以在列表中添加一个额外的图片属性,这样当点击兴趣点时,小图片就会在动态地图上弹出。可以通过点击放大此预览图像。
语法:image=文件名
示例
{{listing | name=旅游局 | ..... | image=Hornburg Tourismus-Amt.jpg | ..... }}
{{see | name=老忠实喷泉 | ..... | image=Old Faithful Rainbow.jpg | ..... }}
.... = 其他参数: | lat= | long= | etc | etc
我应该在哪里放置动态地图?
放在“交通”标题正下方。
如果放置在那里,使用维基行手机版的读者(手机版默认所有部分折叠,除了导语段落)将知道点击哪个部分来打开动态地图。如果因故添加到其他位置,请在编辑摘要或文章的讨论页上说明原因。
地点编码列表
所有这些数字是什么意思?
维基行使用十进制度数系统表示地理坐标。每个列表都需要一对唯一的数字,称为纬度和经度,它们代表其在地图上的位置。它们也称为地理数据、坐标、coords,或简称为 lat 和 long。为兴趣点添加坐标称为地点编码。

纬度指南北方向,范围从-90.0000°到90.0000°。负纬度位于南半球,正数则表示赤道以北。
经度指定位置是在本初子午线(0.0000°,穿过北极和南极,经过英国格林威治)以东还是以西,范围从-180.0000°(西)到180.0000°(东)。这里我们不使用纬度/经度的分钟或秒(如60° 12' 34" N 22° 15' 22" E),您可能在其他地方看到过;这样的坐标需要转换。
小数位数呢?它们衡量坐标的精度,即预期的误差量。鉴于公里最初的定义是地球周长为40,000 千米,因此
- 一度纬度等于(10,000 ÷ 90) 千米,即111.1 千米(69.0 英里)
- 一度经度在赤道上等于111.1 千米(69.0 英里),在南北纬60°处为55.56 千米(34.52 英里),在两极处为零。
使用一度约等于100 千米(62 英里)(纬度和经度均如此)的近似值,可以预期的精度为:
- 0位小数:精度约为±50 千米(31 英里)
- 1位小数:精度约为±5 千米(3.1 英里)
- 2位小数:精度约为500 米(1,600 英尺)
- 3位小数:精度约为50 米(160 英尺)
- 4位小数:精度约为5 米(16 英尺)
超过五位小数一般不需要——如果您在附近都找不到该地点,说明有问题——尽管一些导航和地图软件会提供纳米级别的精度。每对纬度和经度必须具有相同的小数位数,即使这意味着要添加末尾的零(不同数量有时也能工作,但可能会在下次更新时出错)。
收集地理坐标
地理数据可能涉及类似版权的问题,尽管不严格受版权保护,因此个人地理数据和OpenStreetMap(OSM)坐标优于所有其他衍生来源。如果不是很麻烦,请注明您的来源。
对维基行用户来说,最方便的工具是GeoMap,它提供了一种非常快速简便的方法来获取单个地点的坐标,以及Geobatcher,它提供了一种方法,可以一次性查找并锁定整个维基行文章的坐标,无需手动输入或复制粘贴坐标本身!
每个列表都有一个单独的图标,取决于其类型。像 See、Do、Buy、Eat 和 Sleep 这样的特定列表模板只能用在它们各自的章节。对于 Get in 和 Cope 等其他章节,请使用通用的{{listing}} 模板。
每个部分的自动编号都以“1”开始。通用列表模板除外,该模板在整个文章中进行编号。
方法一:GPS

使用GPS或智能手机前往该地点,并以以下格式添加列表:lat=12.34567 | long=45.67890
方法二:动态地图
如果已知兴趣点的位置,请打开poimap2(通过点击目的地页面右上角的地图图标),然后在动态地图上的特定地点右键单击。会弹出一个包含坐标的窗口。复制并将这些数据粘贴到相应的列表中。
方法三:GeoMap
打开GeoMap。输入地址,例如:33, Long Row, Nottingham 或 Wall Street Bar, Roppongi。搜索是多语言的,但仅限于OSM认可的词语。单击红色标记。然后通过复制和粘贴将显示的数值传输到文章中。
方法四:Geobatcher
使用Geobatcher一次查找和映射最多100个坐标。

- 在第一个字段中输入城市和/或国家。
- 选择按名称或地址搜索。按名称搜索匹配OpenStreetMap的兴趣点数据库,而按地址搜索则依赖于可能存在空白的街区地址(例如,找不到20 Main St,但存在1 Main St和50 Main St)。
- 从维基行文章的编辑选项卡中,将列表复制粘贴到大文本框中。
- 按查找坐标按钮。查找1个列表通常需要1秒钟。
- 已找到坐标的列表将被绘制,而没有坐标的列表将在地图上用问号标记。
- 拖放标记以调整坐标。如果您不知道其他列表的位置,请按删除?按钮。
- lat/long属性已插入到第三个文本框中。
- 将第三个文本框中的列表复制回维基旅行。
奖励:使用地图上方的文本框搜索OSM,返回的坐标将显示并绘制在红点标记上。
方法五:ShareMap

ShareMap.org - 开放、知识共享、社交地图工具(http://sharemap.org)可用于为某些文章生成完整的兴趣点列表。使用ShareMap,用户可以轻松使用搜索服务(Nominatim),导入OSM数据(向导或XAPI查询),甚至校准旧的栅格地图(请注意创建的内容必须是CC许可)。
详细的教程屏幕录像可以在这里找到 - http://www.youtube.com/watch?v=Xc5F98q87uo
方法六:OSM
在OpenSteetMap上搜索您的列表。然后右键单击它并选择“显示地址”。这将在左侧面板(第二行)显示纬度和经度。“查询要素”也可用于获取单个兴趣点的位置。
方法七:谷歌地图
请尽可能避免使用此方法,因为它会引入许多与OpenStreetMap协作的许可问题。如果使用此方法,请务必在您的编辑摘要中注明谷歌地图作为坐标来源。
打开谷歌地图,然后右键单击您想要获取的地点。坐标会显示在弹出菜单的最顶部。单击它即可复制数值。
方法八:谷歌地球
与谷歌地图一样,可能会有相同的许可限制。
打开谷歌地球,使所需位置显示在地图上。将光标置于该位置上方。其地理坐标显示在屏幕的右下角。您可以通过工具栏上的“工具”选项卡,然后选择下拉菜单中的“选项”,来选择是以度、分、秒还是以十进度的度数显示。
从 DMS 系统转换
要从传统的度/分/秒格式(如 lat=N45°30'0",long=W73°36'0")或度/分格式(如 lat=N45°30.0',long=W73°36.0')进行转换,请使用以下公式:
- X°Y'Z" = X+(Y/60)+(Z/3600)
过去
- 对于S,纬度加“-”;对于N,假定为“+”
- 对于W,经度加“-”;对于E,假定为“+”
添加区域和路线

区域可以用来在地图上突出显示不同的区域,而路线可以显示徒步路线或其他对旅行者可能相关的内容(例如摩纳哥F1赛道的轮廓)。
OpenStreetMap 区域和路线
添加区域的首选方法是使用OpenStreetMap数据库中已有的几何图形来渲染蒙版、形状或线条。有关更多详细信息,请参阅{{Mapshape}}模板文档。
以下是两个示例。代码解释:
- 第一行将地图添加到文章中。地图中心坐标、页面上的地图大小和缩放级别已定义。
- 第二行借助相应的Wikidata ID,从OpenStreetMap中提取区域/路线。已定义一个标题,点击地图元素后会显示该标题。
示例一 - 徒步路线
文章地图上的实时示例:南部山脊徒步路线
{{mapframe|1.28278|103.79203|width=450|height=300|zoom=13}}
{{Mapshape|type=geoline|wikidata=Q7570434|fill=#FF0000|stroke-width=3|title=Southern Ridges Walk}}
示例二 - 区域边界
文章地图上的实时示例:汉堡区域
{{Mapframe|width=450|height=450|53.560|10.023|zoom=10|show=go,mask}}
{{Mapshape|type=geoshape|wikidata=Q1554, Q1551, Q1561|fill=#d5dc76|title=[[Hamburg/Neustadt-Altstadt|Neustadt-Altstadt]]}}
该工具Wikivoyage Districtifier可能有助于您创建区域概览地图。
自定义区域和路线
地图中有两个非常实用的自定义GeoJSON文件用例:
- 您想添加徒步路线或类似的行程元素,这些元素在OpenStreetMap中不存在(示例:斯德哥尔摩历史之旅)。
- 官方的区域边界在OSM中不存在,或者从游客的角度来看它们没有太大意义。(示例:新加坡或阿姆斯特丹)。
如果您正在寻找一种比下方视频更简单的行程方法,请参阅User:SHB2000/Getting a line on an itinerary,其中GeoJSON代码直接复制到文章中。它也可以用于徒步路线。
创建GeoJSON数据
下方的视频展示了如何使用自定义的区域边界创建动态区域概览地图。对于路线,工作流程相同,只需绘制线条而不是多边形。
工作流程
下面的文字旨在作为视频的补充信息。观看视频才能真正理解工作流程。
- 1. 创建区域概览地图
- 简而言之,有两种选项可以创建GeoJSON:
- 1a. 仅使用geojson.io
- 前往geojson.io,绘制线条/多边形,设置所需的颜色和标题。复制GeoJSON文件并继续步骤2。此解决方案的一个缺点是无法合并节点。因此,如果您有两个相邻的多边形,它们将不会完美对齐。使用1b的解决方案可以解决这个问题。
- 1b. JOSM & geojson.io(视频中展示)
- 使用JOSM绘制所需的多边形,并导出为.geojson。一些说明:
- 仅当多边形具有描述性标签(通常在OpenStreetMap中应用于区域)时,将多边形导出到.geojson才能在JOSM中正常工作(例如,landuse=residential)。
- 您可以在JOSM中为每个多边形/线条分配title和fill标签,如果您不想在geojson.io中进行操作(例如,title=[[Amsterdam/Noord|Noord]]和fill=#000000)。
- 使用JOSM绘制所需的多边形,并导出为.geojson。一些说明:
- 2. 上传到Commons
- 在Wikimedia Commons中创建一个新地图,并将第1步中创建的GeoJSON粘贴进去。
- 3. 在维基行中创建文章地图,并链接到保存在Commons中的GeoJSON文件
- 示例
{{Mapframe|55.95878|-3.18726|width=600|height=550|zoom=13}}- 和
{{Mapshape|type=page|wikicommons=Edinburgh_Districts.map}}
- 4. 创建地图遮罩(可选)
- 为了在区域文章地图中灰色化不相关的部分(示例),您可以将第2步中的GeoJSON粘贴到工具Mapmask <-> GeoJSON Converter中,以生成地图遮罩代码。
创建GPX数据
作为直接创建GeoJSON的替代方法(如上所述),也可以生成GPX路线,然后将其转换为GeoJSON。要创建地图遮罩——用于标识区域的边界(示例)——或行程的GPX路线(示例),则需要执行以下步骤:
- 生成边界或路线数据
- 选项1:直接从OpenStreetMap.org下载数据
- 下载JOSM,这是一个OpenStreetMap数据编辑器。
- 在OpenStreetMap中找到您感兴趣的边界或路线对象。例如,如果您正在查找城市边界:
- 在openstreetmap.org上导航到所需城市。
- 单击“?”图标以查询要素。
- 单击地图上您感兴趣的点(例如,如果您正在生成城市边界,则单击城市名称)。
- 单击后,左侧导航栏将出现“封闭要素”列表。选择您感兴趣的要素(示例:“城市边界 城市名称”)
- 您应该会看到所选对象的视图,左侧导航栏会显示边界类型和ID,例如“Relation: 城市名称 (ID)”——记住这些值,它们将在下一步中使用。
- 在JOSM中,选择File → Download Object。输入您在OpenStreetmap上找到的对象类型和ID。JOSM将显示该对象。
- 在JOSM中根据需要编辑对象——例如,如果存在不相关的对象,可以删除它们。在大多数情况下,此步骤不是必需的。
- 在JOSM中选择File → Save As,选择“GPX files”作为文件类型,并使用您喜欢的任何文件名。
- 选项2:自己创建轨迹
- 使用合适的路线编辑器。不要使用谷歌地图来绘制边界/轨迹——谷歌地图的许可与OSM许可不兼容。
- 通过单击地图上的不同点来创建轨迹。保存为mytrack [TRACK]。
- 选项1:直接从OpenStreetMap.org下载数据
- 前往维基行GPX格式化工具并上传您刚刚创建的GPX文件。此工具会将信息重新格式化为维基行地图工具可以读取的格式。验证页面底部显示的地图预览是否符合您的预期。如果地图不符合预期,您需要修改GPX数据。如果您不确定需要做什么,请向其他维基行用户寻求帮助。
可以使用各种第三方工具生成GPX轨迹,然后将其转换为GeoJSON供维基行使用。
- GPX在线编辑器。请参阅在线帮助获取说明。下载为轨迹。
- http://gpxcreator.com 是一个免费的开源Java桌面应用程序,它显示OpenStreetMap并允许用户绘制路径,生成GPX文件。只需进行少量更改(例如,在文本编辑器中进行搜索和替换以从每个点中删除“elevation=0”)即可将这些路径转换为适用于行程的可用格式。
- OpenStreetMap提供JOSM作为生成GPX轨迹的工具,请参阅http://josm.openstreetmap.de/download/josm.jnlp
转换为GeoJSON
各种在线工具可将GPX或其他标准格式转换为GeoJSON,例如:
- http://2geojson.com
- http://www.gpsies.com/convert.do
- https://mapbox.github.io/togeojson
- https://mygeodata.cloud/converter
一旦轨迹或边界采用兼容格式,各种选项即可在维基行中使用:
- 边界可以使用{{Mapmask}}、{{Mapshape}}和{{Mapframe}}模板。
- 边界或轨迹可直接使用,如mw:Help:Extension:Kartographer中所述。
请参阅跨西伯利亚铁路,了解直接调用<maplink>在俄罗斯绘制行程的示例。文章末尾的文章中有<maplink>的坐标。
请参阅圣彼得堡,了解以Commons作为数据源的示例,数据来自commons:Data:Saint_Petersburg_Districts.map,使用以下代码嵌入:
{{Mapframe|59.92|30.24|30.30|zoom=9|show=other,mask,go}}
{{mapshape|type=page|wikicommons=Saint_Petersburg_Districts.map}}
模板子页{{GPX}}现已弃用。User:Yurik/Sandbox/Gpx1和User:Yurik/Sandbox/Gpx2包含在mw:Extension:Kartographer部署时已存在于维基行中的GPX轨迹的转换版本。这些可以导入回原始文章,方法是删除(lat, long, zoom)参数——允许新的{{mapframe}}自动检测正确的比例和范围。Special:Diff/3142916/3207633是一个将这些地图之一导入横贯拉布拉多公路的示例。 (另请参阅phab:T154908和phab:T137677。)
参见
- mw:Help:Extension:Kartographer - Kartographer扩展在后台用于生成所有动态地图。
