我正在使用类似于http://en.wikipedia.org/w/api.php?action=query&list=geosearch&gsradius=10000&gscoord=41.426140|26.099319.
我返回这样的东西
<?xml version="1.0"?>
<api>
<query>
<geosearch>
<gs pageid="27460829" ns="0" title="Kostilkovo" lat="41.416666666667" lon="26.05" dist="4245.1" primary="" />
<gs pageid="27460781" ns="0" title="Belopolyane" lat="41.45" lon="26.15" dist="4988.7" primary="" />
<gs pageid="27460862" ns="0" title="Siv Kladenets" lat="41.416666666667" lon="26.166666666667" dist="5713.5" primary="" />
<gs pageid="13811116" ns="0" title="Svirachi" lat="41.483333333333" lon="26.116666666667" dist="6521.9" primary="" />
<gs pageid="27460810" ns="0" title="Gorno Lukovo" lat="41.366666666667" lon="26.1" dist="6613.4" primary="" />
<gs pageid="27460799" ns="0" title="Dolno Lukovo" lat="41.366666666667" lon="26.083333333333" dist="6746.2" primary="" />
<gs pageid="27460827" ns="0" title="Kondovo" lat="41.433333333333" lon="26.016666666667" dist="6937" primary="" />
<gs pageid="27460848" ns="0" title="Plevun" lat="41.45" lon="26.016666666667" dist="7383.1" primary="" />
<gs pageid="24179704" ns="0" title="Villa Armira" lat="41.499069444444" lon="26.106263888889" dist="8130" primary="" />
<gs pageid="27460871" ns="0" title="Zhelezari" lat="41.413333333333" lon="25.998333333333" dist="8540.1" primary="" />
</geosearch>
</query>
</api>
Run Code Online (Sandbox Code Playgroud)
但是虽然我实际上是在尝试获取这些页面的一些图片,但需要进行后续调用,例如
获取一些页面图像
http://en.wikipedia.org/w/api.php?action=query&prop=images&pageids=13843906
然后,获取图像信息
http://en.wikipedia.org/w/api.php?action=query&titles=File:Alexandru_Ioan_Cuza_Dealul_Patriarhiei.jpg&prop=imageinfo&iiprop=url
好吧,即使这让我得到了我最终需要的东西,它也根本没有效率。
我想知道这个调用是否有一些参数,或者完全其他调用可以在最多 2 个步骤/调用中提供所有这些信息。不过,如果它只是一个,那就太好了。
哇,我不知道现在还有这样的功能!但要回答你的问题,因为它是一个list查询,你可能可以将它用作生成器。
我们来尝试一下:
生成器查询以获取匹配页面上的图像:http://en.wikipedia.org/w/api.php? action=query&prop=images&imlimit=max&generator=geosearch&ggsradius=10000&ggscoord=41.426140|26.099319
查询prop=images也可以用作生成器,因此您也可以这样做:
唉,据我所知,您无法嵌套生成器,因此您无法在一个查询中执行这两个步骤。您可以:
唉,事实证明这两个选项都无法为您提供一些您可能想要的信息。如果您用作list=geosearch生成器,则如果您希望在地图上显示结果,则无法获得可能需要的坐标信息。另一方面,用作prop=images生成器会让您错过更重要的事情:了解哪些图像用于哪些页面!
因此,不幸的是,如果您的目标是将图像放置在地图上,您可能必须使用三个单独的查询来完成。至少您仍然可以在一个请求中查询多个页面/图像,因此您不需要超过三个页面/图像(直到您达到查询限制并需要使用Continuations,即)。
(此外,分三步执行可以让您在第三步之前对图像应用一些过滤。例如,示例查询返回的大多数页面仅具有相同的三个图像 - Flag of Bulgaria.svg、Ivaylovgrad Reservoir.jpg和Oblast Khaskovo.png — 所有这些都是通过模板使用的,而且没有一个看起来像是代表特定位置的好选择。)
诗。如果您只是对查找特定位置附近的图像感兴趣,即使它们没有在任何特定的维基百科文章中使用,您可能想尝试直接在Wikimedia Commons上使用地理搜索。它似乎没有返回保加利亚示例坐标的任何结果,但它在更拥挤的位置工作得很好。