获取道路的几何(线/平面)

时间:2015-08-17 11:38:44

标签: javascript google-maps google-maps-api-3

如何获取数组中道路的几何(线/平面)?

有可能吗?

谢谢!

[抱歉我的英语不好]

1 个答案:

答案 0 :(得分:1)

Google地图目前无法使用此功能。像OpenStreetMap这样的开源Web服务能够在给定的边界内返回数据库中所有道路的几何(几乎都是所有道路)。可以使用名为Overpass的API在HTTP中检索此数据。

查找属于特定道路的所有节点的查询可以是:

way(s,w,n,e)["name"="Your Road Name"];out;

s,w,n,e是南,西,北和东边界的数据来源。

你需要知道近似界限。这可以通过Google中的道路地理编码来进行,然后将返回的坐标扩展为0.1度。

这将返回一个XML文档:

<osm version="0.6" generator="Overpass API">
<note>
The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.
</note>
<meta osm_base="2015-08-17T12:36:02Z"/>
<way id="16578496">
<nd ref="2399812387"/>
<nd ref="2399812388"/>
<nd ref="2399812389"/>
<nd ref="2399812390"/>
<nd ref="171131426"/>
<tag k="highway" v="residential"/>
<tag k="name" v="Halifax Court"/>
<tag k="tiger:cfcc" v="A41"/>
<tag k="tiger:county" v="Guilford, NC"/>
<tag k="tiger:name_base" v="Halifax"/>
<tag k="tiger:name_type" v="Ct"/>
<tag k="tiger:reviewed" v="no"/>
<tag k="tiger:zip_left" v="27265"/>
<tag k="tiger:zip_right" v="27265"/>
</way>
</osm>

在此之后,您可以使用以下命令查询所有节点引用:

node(2399812389);out;

您一次只能查询一个节点。这将返回如下内容:

<osm version="0.6" generator="Overpass API">
<note>
The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.
</note>
<meta osm_base="2015-08-17T12:58:02Z"/>
<node id="2399812389" lat="36.0107609" lon="-79.9805742"/>
</osm>

将所有点的纬度/经度数据合并到折线后,您就拥有道路几何形状。