谷歌地图JavaScript API第3版 地理编码服务

 

地理编码服务

  1. 概观
  2. 地理编码请求
  3. 地理编码响应
    1. 地理编码结果
    2. 地址组件类型
    3. 状态代码
  4. 反向地理编码
  5. 视口偏置
  6. 区码偏置

概观

地理编码地址(如“1600剧场百汇,山景,CA”)转换为地理坐标(如纬度37.423021经度和-122.083739),你可以用它来 ​​放置标志或位置的地图的过程中。

反向地理编码是将地理坐标转换的过程中,成为一个人类可读的地址。

谷歌地图API提供了从用户输入动态地理编码和反向地理编码地理编码类。这些请求速率限制,以防止滥用的服务。相反,如果你想进行地理编码已知的静态地址, 地理编码Web服务文档。

地理编码请求

访问地理编码服务是异步的,因为谷歌地图API需要调用一个外部服务器。出于这个原因,你需要传递一个回调方法来执行的请求完成时。这个回调方法处理的结果(S)。请注意,地址解析器可能返回多个结果。

您在您的代码中访问谷歌地图API地理编码服务通过 google.maps.Geocoder对象。Geocoder.geocode() 方法启动的请求地理编码服务,通过它一个 GeocodeRequest,对象字面的输入项和一个回调方法执行后收到的响应。

GeocodeRequest对象的文字包含以下字段:


 地址 字符串
 经纬度 经纬度
 界限 LatLngBounds 
 地区 字符串
}

下面说明这些字段。

  • 地址需要*) -您要进行地理编码的地址。
  • 的经纬度要求*) - 你想获得最近的地方,人类可读的地址经纬度
  • 可选) - LatLngBounds内的偏见地理编码结果更加突出。(有关详细信息,请参阅 “视口偏置以下)。
  • 地区可选) -指定的地区代码,作为一个 IANA语言区域的子标签在大多数情况下,这些标签直接映射到熟悉的)国家和地区代码顶级域名(ccTLD(“顶级域”)两个字符的值。(有关详细信息,请参阅以下地区代码偏置。)

*注意:您可以通过 地址经纬度来查询。(如果你传递一个 经纬度,地理编码进行所谓的一个反向地理编码。有关更多信息,请参见反向地理编码)。

界限区域的参数只会影响,而不是完全限制,从地理编码的结果。

地理编码响应

地理编码服务需要一个回调方法来执行检索时Geocoder的结果。这个回调函数传递两个参数保持的结果状态代码,按照这个顺序。Geocoder只可能返回多个条目,GeocoderResults 反对文字是一个数组。

地理编码结果

GeocoderResults对象文字代表一个单独的地理编码结果和对象是以下形式:

results[]: {
 types[]: string,
 formatted_address: string,
 address_components[]: {
   short_name: string,
   long_name: string,
   types[]: string
 },
 geometry: {
   location: LatLng,
   location_type: GeocoderLocationType
   viewport: LatLngBounds,
   bounds: LatLngBounds
 }
}

这些字段的解释如下:

  • 类型[]是一个数组,指示返回结果类型该数组中包含的一组中的一个或多个标签,识别结果中返回的类型的特征。例如,地理编码“芝加哥”返回“位置”,这表明,“芝加哥”,是一个城市,而且还返回“政治”,表示这是一个政治实体。
  • formatted_address是一个字符串,其中包含人类可读的地址,这个位置。通常情况下,这个地址相当于“邮政地址”,有时会因国家不同。(请注意,一些国家,如英国,不要让真正的邮政地址分配,由于许可限制)。该地址通常是由一个或多个地址组成部分例如,地址“,纽约州,纽约第八大道111”包含“111第八大道”(街道地址),“纽约”(城市)和“NY”(美国的州)的单独的地址组件。注意下面这些地址组件。(类型的更多信息,请参见 下面的类型
  • address_component []是一个数组,包含单独的地址组件,如上面所解释的。
  • 几何包含以下信息:

    • 位置包含地理编码的经度,纬度值。请注意,我们回到这个位置作为一个经纬度对象的,而不是作为一个格式化字符串。
    • LOCATION_TYPE额外的数据存储在指定的位置。目前支持以下值:

       

      • google.maps.GeocoderLocationType.ROOFTOP表示返回的结果反映了一个精确的地理编码。
      • google.maps.GeocoderLocationType.RANGE_INTERPOLATED 表示,返回的结果反映的近似(通常在道路上)之间插入两个精确点(如十字路口)。插值结果时,通常会返回屋顶地理编码街道地址是不可用。
      • google.maps.GeocoderLocationType.GEOMETRIC_CENTER 表明返回的结果是如的折线(例如,街道)或多边形(地区)的结果的几何中心的。
      • google.maps.GeocoderLocationType.APPROXIMATE 表明,返回的结果是近似的。

    • 视口存储推荐的视口返回的结果。
    • 边界(可选返回),存储的 LatLngBounds,可完全包含在返回的结果。请注意,这些边界可能不符合推荐的视口。(例如,旧金山的 法 '伦群岛,这在技术上是城市的一部分,但不应该在视口中返回)。

将返回地址的地理编码,使用浏览器的首选语言设置,或指定的语言时加载的API JavaScript中使用的语言参数。(有关详细信息,请参阅 本地化

地址组件类型

类型[]数组内返回的结果表示 地址类型这些类型还可以返回address_components []数组内, 以指示特定的地址分量的类型。在地理编码的地址可能有多种类型,类型可以被认为是“标签”。例如,许多城市的标签,政治地区

支持以下类型和返回的HTTP地址解析器:

  • street_address表示具体的街道地址。
  • 路由表示一个命名的路径(如“美国101”)。
  • 交叉点表示一个主要的路口,通常有两种主要道路。
  • 政治表示一个政治实体。通常情况下,这种类型的表示一些民间管理的多边形。
  • 国家表明国家的政治实体,通常是最高的了Geocoder返回的订单类型。
  • administrative_area_level_1表示低于国家一级的一阶民间实体。在美国,这些行政级别是国家。并非所有国家都表现出这些行政的水平。
  • administrative_area_level_2 表示二阶民间实体低于全国水平。在美国,这些行政级别是县。并非所有国家都表现出这些行政的水平。
  • administrative_area_level_3表示三阶民间实体低于全国水平。这种类型表示轻微的民事审判庭。并非所有国家都表现出这些行政的水平。
  • colloquial_area表示常用的替代名称的实体。
  • 地方表示纳入城市或城镇的政治实体。
  • sublocality表示一阶低于当地的民间实体。
  • 附近表示命名的附近。
  • 前提表示指定的位置,一般的建筑物或建筑物的集合与一个共同的名字
  • subpremise表示一阶实体下面命名的位置,通常是一个奇异的建筑内,建筑物的集合与一个共同的名字。
  • postal_code的表示邮政编码,用于解决在该国邮政邮件。
  • natural_feature表示一个显着的自然特征。
  • 机场表示机场。
  • 公园表示命名的公园。

在除了上述以外,地址的组分可以具有以下类型:

  • post_box表示一个特定的邮箱。
  • street_number表示精确的门牌号码。
  • 表示层的建设地址。
  • 房间表示房的建设地址。

状态代码

状态代码可能返回下列值之一:

  • google.maps.GeocoderStatus.OK表示地理编码是成功的。
  • google.maps.GeocoderStatus.ZERO_RESULTS表明,地理编码是成功的,但没有返回任何结果。这可能是由于地理编码通过了一个不存在的的地址或 latng在一个偏远的位置。
  • 的google.maps.GeocoderStatus.OVER_QUERY_LIMIT表明你是在你的配额。
  • google.maps.GeocoderStatus.REQUEST_DENIED表示,由于某些原因,您的请求被拒绝。
  • google.maps.GeocoderStatus.INVALID_REQUEST通常表明缺少的查询(地址经纬度)。

在这个例子中,我们进行地理编码的地址和一个标记返回的纬度和经度值。需要注意的是传递一个匿名函数,文字处理程序。

  
  
   
 
      
     
 


    
 
  

   
    
    
        

         


        
        
没有成功的原因:“  + 状态); 
      } 
    }); 
  } 

< 身体的onload = “初始化()” > 
 < div的id = “map_canvas”的风格= “宽度:320px来电,高 ​​度:480像素;” > </ DIV > 
  <DIV> 
    输入id = “地址” 类型= “文本框” = “悉尼,新南威尔士州” > 
    < 输入类型= “按钮” = “编码” 的onclick = “codeAddress()” > 
  < / div> 
< / 身体>

查看示例(地理编码simple.html)

反向地理编码(地址查询)

术语地理编码一般是指一个人类可读的地址翻译成地图上的位置。,被称为反向地理编码的过程做相反的,翻译成一个人类可读的地址在地图上的位置 

Geocoder的直接支持反向地理编码的。,而不是提供一个文本地址经纬度参数,提供一个以逗号分隔的纬度/经度对

下面的例子进行地理编码的纬度/经度值,并在该位置的地图居中,带来了一个信息窗口,格式化的地址。我们返回第二个结果,这是较不特定于第一个(在这种情况下,一个邻里名称):

  
  
   
  
   
 
     
     
 


    
 
  

   
    
    
    
    
     
  
        
          

 


          


        
        
失败的原因是:“  + 状态); 
      } 
    }); 
  }

请注意,在前面的例子中,我们发现的第二个结果(选择的结果[1] 反向地理编码器通常会返回多个结果。地理编码“地址”是的不仅仅是邮政地址,但任何方式在地理上的位置命名,例如地理编码点进行地理编码时在芝加哥市的一个点,可能被标记为一个街道地址,城市(芝加哥),其状态(伊利诺伊州),或一个国家(美国)。所有的地址反向地理编码地理编码。返回所有的这些结果。

反向地理编码匹配的政治实体(国家,省,市,街道),街道地址和邮政编码。

前面的查询返回的地址的完整列表如下所示。

[ 0 ]。formatted_address  “275-291贝德福德大道,布鲁克林区,NY 11211,USA” 
结果[ 1 ]。formatted_address  “威廉斯堡,NY,USA” 
结果[ 2 ]。formatted_address  “纽约11211,USA “ 
[ 3 ]。formatted_address  “国王,纽约,美国” 
结果[ 4 ]。formatted_address  “布鲁克林,纽约,美国” 
结果[ 5 ]。formatted_address  “纽约,纽约,美国” 
结果[ 6 ]。formatted_address  “纽约,美国” 
结果[ 7 ]。formatted_address  “美国”

最好至少比赛的顺序返回地址。一般情况下,更准确的地址是最突出的结果,因为它是在这种情况下。请注意,我们返回不同类型的地址,从最具体的街道地址,那么具体的政治实体,如邻里,城市,县,州等,如果你想匹配一个更一般的地址,你不妨检查的结果[类型领域。

注:反向地理编码是不是一门精确的科学。地理编码将试图找到最接近的可寻址位置有一定的公差范围内。

查看示例(地理编码reverse.html)

视口偏置

您还可以指示地理编码服务,喜欢在给定的视口(表示为边界框)的结果。你这样做,通过设置 边界参数的GeocodeRequest对象字面定义该视口的范围请注意,偏置只 喜欢的边界内的结果;如果存在更多的相关结果这些界限之外,它们也可以包括在内。

例如,地理编码为“旅游Winnetka”通常返回芝加哥郊区的:

{ 
  “类型” “位置” “政治” 
  “formatted_address” :“旅游Winnetka,IL,
  
    
    
    
  
    
    
    
  
    
    
    
  
  
      
    
  

但是,指定一个的界限参数定义在这个地理编码回国命名为“旅游Winnetka”在该位置附近的洛杉矶圣费尔南多谷的边界框:

{ 
  “类型” :[的“sublocality” ,“政治” 
  “formatted_address” :“旅游Winnetka,加利福尼亚州,
  
    
    
    
  
    洛杉矶“ 
    “SHORT_NAME” :“洛杉矶” 
    “类型” “administrative_area_level_3” ,“政治” ] 
  },{ 
    “long_name” :“洛杉矶” 
    “SHORT_NAME” :“洛
    
  
    
    
    
  
    
    
    
  
  
     
    
  

区码偏置

您还可以设置地理编码服务返回的结果偏向于一个特定的地区,明确地使用区域参数。这个参数可以指定一个区域代码,为IANA语言 地区的子标签在大多数情况下,这些标签直接映射到熟悉的)国家和地区代码顶级域名(ccTLD(“顶级域”)两个字符的值,如“英国”,“co.uk”。在某些情况下,该区域的标签也支持了ISO-3166-1编码,有时不同的国家代码顶级域的值(“GB”为“大不列颠”)。

为每个域的主要的谷歌地图应用程序提供地理编码,地理编码请求可以发送。需要注意的是偏只 喜欢特定域的结果,如果有更多的相关结果这个领域以外的,他们可能会被列入。

例如,地理编码“托莱多”返回这样的结果,作为地理编码服务的默认域设置为美国:

{ 
  “类型” “位置” “政治” 
  “formatted_address” :“托莱多,OH,
  
    
    
    
  
    
    
    
  
    国“ 
    “SHORT_NAME” :“美国” 
    “类型” :[ “国家” “政治” ] 
  }] 
}

地理编码的地区“字段中的“托莱多” 设置为 “ES” 西班牙)将返回西班牙城市:

{ 
  “类型” “位置” “政治” 
  “formatted_address” :“托莱多,
  
    
    
    
  
    
    
    
  
    
    
    
  
    
    
    
  

你可能感兴趣的:(JavaScript)