http://code.google.com/intl/zh-CN/apis/maps/documentation/geocoding/#Types
返回结果中的 types[]
数组表示地址类型。 address_components[]
数组中也可能返回这些类型,以表示特定地址组成部分的类型。地址解析器中的地址可能有多种类型,这些类型也可以视为“标签”。例如,许多城市都带有 political
和 locality
类型的标签。
HTTP 地址解析器支持并返回以下类型:
street_address
表示一个精确的街道地址。 route
表示一条已命名的路线(如“US 101”)。intersection
表示一个大十字路口,通常由两条主道交叉形成。political
表示一个政治实体。此类型通常表示代表某个行政管理区的多边形。country
表示国家政治实体。在地址解析器返回的结果中,该部分通常列在最前面。administrative_area_level_1
表示仅次于国家级别的行政实体。在美国,这类行政实体是指州。并非所有国家都有该行政级别。administrative_area_level_2
表示国家级别下的二级行政实体。在美国,这类行政实体是指县。并非所有国家都有该行政级别。administrative_area_level_3
表示国家级别下的三级行政实体。此类型表示较小的行政单位。并非所有国家都有该行政级别。colloquial_area
表示实体的通用别名。locality
表示合并的市镇级别政治实体。sublocality
表示仅次于地区级别的行政实体。neighborhood
表示已命名的邻近地区。premise
表示已命名的位置,通常是具有常用名称的建筑物或建筑群。subpremise
表示仅次于已命名位置级别的实体,通常是使用常用名称的建筑群中的某座建筑物。postal_code
表示邮政编码,用于确定相应国家/地区内的信件投递地址。natural_feature
表示某个明显的自然特征。airport
表示机场。park
表示已命名的公园。point_of_interest
表示已命名的兴趣点。通常,这些“POI”是一些不易归入其他类别的比较有名的当地实体,如“帝国大厦”或“自由女神像”。除此之外,地址组成部分还可以使用以下类型:
post_box
表示一个具体的邮筒。street_number
表示精确的街道编号。floor
表示建筑物的楼层号。room
表示建筑物的房间编号。术语“地址解析”通常是指将人类可读的地址转换成地图上的位置。 反之,将地图上的位置转换成人类可读的地址这一过程则称为“反向地址解析”。
Google Geocoding API 支持直接使用 latlng
参数进行反向地址解析。例如,下列查询包含了布鲁克林某一位置的纬度/经度值:
http://maps.google.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true_or_false
请注意:在传入 latlng
参数时,请确保纬度值与经度值之间没有空格。
该查询返回下列结果:
{
"status": "OK",
"results": [ {
"types": [ "street_address" ],
"formatted_address": "275-291 Bedford Ave, Brooklyn, NY 11211, USA",
"address_components": [ {
"long_name": "275-291",
"short_name": "275-291",
"types": [ "street_number" ]
}, {
"long_name": "Bedford Ave",
"short_name": "Bedford Ave",
"types": [ "route" ]
}, {
"long_name": "New York",
"short_name": "New York",
"types": [ "locality", "political" ]
}, {
"long_name": "Brooklyn",
"short_name": "Brooklyn",
"types": [ "administrative_area_level_3", "political" ]
}, {
"long_name": "Kings",
"short_name": "Kings",
"types": [ "administrative_area_level_2", "political" ]
}, {
"long_name": "New York",
"short_name": "NY",
"types": [ "administrative_area_level_1", "political" ]
}, {
"long_name": "United States",
"short_name": "US",
"types": [ "country", "political" ]
}, {
"long_name": "11211",
"short_name": "11211",
"types": [ "postal_code" ]
} ],
"geometry": {
"location": {
"lat": 40.7142298,
"lng": -73.9614669
},
"location_type": "RANGE_INTERPOLATED",
"viewport": {
"southwest": {
"lat": 40.7110822,
"lng": -73.9646145
},
"northeast": {
"lat": 40.7173774,
"lng": -73.9583193
}
}
}
},
... Additionalresults[]
...
请注意,反向地址解析器传回了多个结果。结果的 "formatted_addresses"
不仅是指通信地址,还包含对位置进行地理命名的所有方式。例如,当对芝加哥市中的一个点进行地址解析时,地址解析的点可标注为其街道地址、城市(芝加 哥)、州(伊利诺斯)或国家(美国)。这些对地址解析器来说都是“地址”。反向地址解析器可将任何这些类型的地址作为有效结果传回。
反向地址解析器将匹配政治实体(国家/地区、省、市和邻近地区)、街道地址和邮政编码。
前一查询所传回的 formatted_address
值的完整列表如下所示。
"formatted_address": "275-291 Bedford Ave, Brooklyn, NY 11211, USA",
"formatted_address": "Williamsburg, NY, USA",
"formatted_address": "New York 11211, USA",
"formatted_address": "Kings, New York, USA",
"formatted_address": "Brooklyn, NY, USA",
"formatted_address": "New York, NY, USA",
"formatted_address": "New York, USA",
"formatted_address": "United States"
通常,地址将按照具体程度由高到低的顺序传回;最确切的地址将作为最显著的结果传回,本例就是如此。请注意,我们传回了各种不同的地址,从十分具体的街道地址到比较笼统的政治实体,如邻近地区、市、县、州/省等。如果您希望匹配更广泛的地址,可能要检查传回的 Placemark
的 "types"
字段(请参见上文的地址组成部分类型)。
注意:反向地址解析给出的是估计结果。地址解析器会试图在一定的偏差范围内查找最接近的可寻址位置;如果找不到匹配项,地址解析器通常不会传回结果。
https://github.com/alexreisner/geocoder/blob/master/CHANGELOG.rdoc
https://github.com/alexreisner/geocoder/blob/master/CHANGELOG.rdoc
Add support for IP address geocoding via FreeGeoIp.net.
Add support for Yahoo PlaceFinder geocoding API.
Add support for custom geocoder data handling by passing a block to geocoded_by or reverse_geocoded_by.
Add Rack::Request#location method for geocoding user’s IP address.
Change gem name to geocoder (no more rails-geocoder).
Gem now works outside of Rails.
DEPRECATION: fetch_coordinates no longer takes an argument.