与Google地方信息/地理编码API建立交集

Ebo*_*ike 13 google-geocoding-api google-places-api

我正在尝试使用Google Places API找到最近的两条街道(基本上是指示最近的交叉点).但是,任何结果只会返回一条"路线",如果有的话.

我想我可以用+或X模式做5个查询,但这很麻烦,不可靠,当然会更快地达到查询限制.

我很想说这是一个刻意的举动,因为API并不是用于导航系统之类的东西(我不想做),但我仍然希望有一种符合TOS标准的方式来获得交集.

旁注 - 似乎指定"types = route"永远不会返回任何结果,这进一步加剧了我的怀疑,即Places实际上只是用于实际的POI,而不是用于导航,尽管服务条款没有提及任何明确的在这方面的限制.

编辑:正如克里斯指出的那样,Geocoding API专门用于地理编码,但除了通过多个查询之外,我仍然没有看到获得最近的十字路口的方法.

dmz*_*zza 11

GeoNames为纬度/经度坐标的最近交点提供地理编码API.

http://www.geonames.org/maps/us-reverse-geocoder.html#findNearestIntersection

JSON响应如下所示:

{"intersection":
 {"adminName2":"San Mateo",
  "street2":"Curtis St",
  "postalcode":"94025",
  "street1":"Roble Ave",
  "adminCode1":"CA",
  "distance":"0.08",
  "countryCode":"US",
  "lng":"-122.180842",
  "placename":"Menlo Park",
  "lat":"37.450649",
  "adminName1":"California"
 },
 "credits":"1.0"
}
Run Code Online (Sandbox Code Playgroud)

street1并且street2是十字路口.


Roo*_*oke 7

一致认为,Google的反向地理编码器不够复杂,无法在一个查询中报告交叉点.也就是说,没有一个参数可以用来告诉他们你只想要结果"types" : [ "intersection" ].谷歌正在这里吃自己的狗食; 如果您在maps.google搜索框中输入纬度/经度,则总会得到一条街道(用谷歌的说法,即"路线").

正如您所指出的那样,您可以通过大量的启发式方法来获得令人垂涎的["intersection"]类型.

例如,第一世界城市的几个"主要"交叉路口都有描述交叉口的交通站点.如果任何结果都有 "types" : [ "bus_station", "transit_station" ]元素,您可以尝试将该"long_name"元素作为搜索词,并希望得到一个交集.smirkingman还提到了一个可行的解决方案.这两个问题都需要2个以上的查询.

总之,Google Geocoding API中没有latelngToIntersection(lat,lng)类型的函数.Google自己的maps.google页面中存在此证据.我会以不同方式攻击您的问题.如果您想获得GPS位置最近的主要交叉路口,可能有助于用户提供帮助.众所周知,地理编码充满了肮脏的人性.