如何提取Google地图上标记的经纬度?

14

我想从一个Google地图网页中提取大约50-100个标记的纬度和经度。我无法控制该页面,也只需要执行一次,因此我正在寻找一种快速且简单的方法。我有安装了FireBug插件的Firefox和Chrome浏览器,所以我需要的是比重新输入数字更容易的方法。


1
@Jonathan:你为什么觉得我会偷它呢?从我所说的来看,这可能是来自公共领域数据集。(事实上,我有充分理由相信所有者不介意我提取数据。该页面是公开可用的。) - BCS
4
如果这是一个公共数据集,为什么不直接获取它,而要编写脚本从应用程序内部获取数据?一个公开可用的页面不意味着其上的数据是免费的... - Jonathan
3
你能想象在一个任何人都可以自由访问的地图上,某些点的坐标不是自由的情况吗? - nico
4个回答

17

只需在地图上点击链接快捷方式,即可检索带有标记的地图URL。

接下来,在此URL末尾添加&output=kml,并使用该链接检索包含所有标记数据的kml文件。

这个kml文件实际上是xml格式的,因此解析它应该很容易,你只需要查找包含所需纬度和经度数据的<coordinates>元素。

kml格式的文档在这里:http://code.google.com/apis/kml/documentation/kmlreference.html


一个简单的正则表达式来提取坐标是<coordinates>.*</coordinates>。 - FixerMark
6
这不再起作用了。 现在的诀窍是:https://www.google.com/maps/d/kml?mid={map_id}例如: https://www.google.com/maps/d/kml?mid=1lL6Ylpo7P3HnANcHTAzbH5hEx-E - Bruno Duyé

4
只需要保存 .html 文件并使用正则表达式即可:
这两个正则表达式可能是一个好的起点:
@[0-9]+\.[0-9]+,-[0-9]+.[0-9]+",geocode:"",sxti:"[-@A-Za-z .]+"
{id:"[A-Zloc0-9]+",fid

3
Google已经改变了提取有关google.maps信息的方式,并设置了一些限制,如每天查询次数。
要提取Google地图的纬度和经度,您需要了解一些HTML代码和操作JSON/XML文件的知识(所有这些都可以在许多教程中找到)。
我建议您使用“Google Places API”来提取数据,它非常容易!而且您可以免费每天提取约150k个位置。您需要获取一个帐户,激活API Places的特权(打开/关闭按钮),获取您的秘密KEY,然后使用简单的URL提取JSON/XML文件。以下是两个很棒的链接:[1] https://developers.google.com/places/documentation/search?hl=en 和 [2] https://developers.google.com/places/training/basic-place-search?hl=en
如果您想获取有关要获取的坐标的详细信息,请转到第二个链接中的“请求地点详情”部分,该部分提供有关该网站是什么类型、电话号码以及用户发表的所有评论(如果可用)的信息。
编码出色,问候!

0

根据地图类型和是否使用纬度和经度或地址设置插针,甚至可以仅获取该链接(在Google地图页面上点击“链接”,浏览器中的URL可能不同),然后查找“sll = [ ... ]”参数。


好的,现在我该如何提取链接呢?请记住,我有很多链接,手动处理不太容易。 - BCS
哪些链接?我以为你想要纬度/经度。 - Dominik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接