精华内容
下载资源
问答
  • 下面小编就为大家带来一篇iOS 原生地图地理编码与反地理编码(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 百度地图定位+反地理编码获取POIList
  • 反地理编码的接口。mSearch.geocode(new GeoCodeOption().city(editCity.getText().toString()).address(editGeoCodeKey.getText().toString()));mSearch.reverseGeoCode(new ReverseGeoCodeOpt...

    本以为很麻烦的,结果就是百度已经提供了:地理编码&反地理编码的接口。

    mSearch.geocode(new GeoCodeOption().city(

    editCity.getText().toString()).address(

    editGeoCodeKey.getText().toString()));

    mSearch.reverseGeoCode(new ReverseGeoCodeOption()

    .location(ptCenter));之后只需要重写onGetGeoCodeResult(GeoCodeResult result)和onGetReverseGeoCodeResult(ReverseGeoCodeResult result)就可以对正反编码进行自定义处理

    完整代码:

    package baidumapsdk.demo;

    import android.app.Activity;

    import android.os.Bundle;

    import android.view.View;

    import android.widget.EditText;

    import android.widget.Toast;

    import com.baidu.mapapi.map.BaiduMap;

    import com.baidu.mapapi.map.BitmapDescriptorFactory;

    import com.baidu.mapapi.map.MapStatusUpdateFactory;

    import com.baidu.mapapi.map.MapView;

    import com.baidu.mapapi.map.MarkerOptions;

    import com.baidu.mapapi.model.LatLng;

    import com.baidu.mapapi.search.core.SearchResult;

    import com.baidu.mapapi.search.geocode.GeoCodeOption;

    import com.baidu.mapapi.search.geocode.GeoCodeResult;

    import com.baidu.mapapi.search.geocode.GeoCoder;

    import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener;

    import com.baidu.mapapi.search.geocode.ReverseGeoCodeOption;

    import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult;

    /**

    * 此demo用来展示如何进行地理编码搜索(用地址检索坐标)、反地理编码搜索(用坐标检索地址)

    */

    public class GeoCoderDemo extends Activity implements

    OnGetGeoCoderResultListener {

    GeoCoder mSearch = null; // 搜索模块,也可去掉地图模块独立使用

    BaiduMap mBaiduMap = null;

    MapView mMapView = null;

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_geocoder);

    CharSequence titleLable = "地理编码功能";

    setTitle(titleLable);

    // 地图初始化

    mMapView = (MapView) findViewById(R.id.bmapView);

    mBaiduMap = mMapView.getMap();

    // 初始化搜索模块,注册事件监听

    mSearch = GeoCoder.newInstance();

    mSearch.setOnGetGeoCodeResultListener(this);

    }

    /**

    * 发起搜索

    *

    * @param v

    */

    public void SearchButtonProcess(View v) {

    if (v.getId() == R.id.reversegeocode) {

    EditText lat = (EditText) findViewById(R.id.lat);

    EditText lon = (EditText) findViewById(R.id.lon);

    LatLng ptCenter = new LatLng((Float.valueOf(lat.getText()

    .toString())), (Float.valueOf(lon.getText().toString())));

    // 反Geo搜索

    mSearch.reverseGeoCode(new ReverseGeoCodeOption()

    .location(ptCenter));

    //@param:LatLng

    } else if (v.getId() == R.id.geocode) {

    EditText editCity = (EditText) findViewById(R.id.city);

    EditText editGeoCodeKey = (EditText) findViewById(R.id.geocodekey);

    // Geo搜索

    mSearch.geocode(new GeoCodeOption().city(

    editCity.getText().toString()).address(

    editGeoCodeKey.getText().toString()));

    //@param:城市+地址

    }

    }

    @Override

    protected void onPause() {

    mMapView.onPause();

    super.onPause();

    }

    @Override

    protected void onResume() {

    mMapView.onResume();

    super.onResume();

    }

    @Override

    protected void onDestroy() {

    mMapView.onDestroy();

    mSearch.destroy();

    super.onDestroy();

    }

    @Override

    public void onGetGeoCodeResult(GeoCodeResult result) {

    if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {

    Toast.makeText(GeoCoderDemo.this, "抱歉,未能找到结果", Toast.LENGTH_LONG)

    .show();

    return;

    }

    mBaiduMap.clear();

    mBaiduMap.addOverlay(new MarkerOptions().position(result.getLocation())

    .icon(BitmapDescriptorFactory

    .fromResource(R.drawable.icon_marka)));

    //加上覆盖物

    mBaiduMap.setMapStatus(MapStatusUpdateFactory.newLatLng(result

    .getLocation()));

    //定位

    String strInfo = String.format("纬度:%f 经度:%f",

    result.getLocation().latitude, result.getLocation().longitude);

    Toast.makeText(GeoCoderDemo.this, strInfo, Toast.LENGTH_LONG).show();

    //result保存地理编码的结果 城市-->坐标

    }

    @Override

    public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {

    if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {

    Toast.makeText(GeoCoderDemo.this, "抱歉,未能找到结果", Toast.LENGTH_LONG)

    .show();

    return;

    }

    mBaiduMap.clear();

    mBaiduMap.addOverlay(new MarkerOptions().position(result.getLocation())

    .icon(BitmapDescriptorFactory

    .fromResource(R.drawable.icon_marka)));

    //加上覆盖物

    mBaiduMap.setMapStatus(MapStatusUpdateFactory.newLatLng(result

    .getLocation()));

    //定位

    Toast.makeText(GeoCoderDemo.this, result.getAddress(),

    Toast.LENGTH_LONG).show();

    //result保存翻地理编码的结果 坐标-->城市

    }

    }

    展开全文
  • iOS定位 – 普通定位(没有地图) – 反地理编码(得到具体位置),下面通过代码给大家详解,代码如下: #import <CoreLocation> 使用到的头文件 要引入CoreLocation这个包 <CLLocationManagerDelegate> 使用的代理名称...
  • 图解百度地图反地理编码系统

    千次阅读 2018-04-23 17:35:50
    百度地图反地理编码服务——将坐标转换为标准地址正好能够帮你解决这一问题。图1 莲化池公园和丰台区园林绿化局示意图小亮和小莲相约一起去莲花池公园,在找不到对方的情况下,小亮打开百度地图,客户端根据小亮当前...

    前言


    我们在约会的时候常常会碰到一个问题,约定地址范围太大找不到对方?怎样才能在一个较大范围内借助相对参照物快速找到彼此?百度地图反地理编码服务——将坐标转换为标准地址正好能够帮你解决这一问题。


    1 莲化池公园和丰台区园林绿化局示意图


    小亮和小莲相约一起去莲花池公园,在找不到对方的情况下,小亮打开百度地图,客户端根据小亮当前的经纬度得到“在丰台区园林绿化局附近”,此时小莲打电话说她“在莲花池公园里”,小亮根据地图选择在两人中间位置——莲花池南门见面,两人轻松找到对方。


    反地理编码服务主要使用到点、线、面三种类型的数据,图上的丰台区园林绿化局、莲花池南路、莲花池公园分别代表这三种类型的数据。


    数以万计的应用都在使用百度的反地理编码服务,该服务采用网格空间索引技术支撑了每日几百亿次的调用。如图2所示,整个地图被切分成了一个个方格,任何一个坐标都会映射到某个方格中。我们将方格编号,“莲花池公园”会映射到一系列方格中(2, 3, 4, 8, 9, 10, 11, 14, 15, 16, 17),“丰台区园林绿化局”会映射到一个方格中(20)。


    2 莲花池公园和丰台区园林绿化局的网格映射

    我们将表示“莲花池公园” 的格子(2, 3, 4, 8, 9, 10, 11, 14, 15, 16, 17)和表示“丰台区园林绿化局”的格子(20)分别存入图3(1)和图3(2)的表格中。查询图3(1)中的表格,小莲的坐标(8号格子)指向“莲花池公园”,发现小莲“在莲花池公园里”。在小亮周围有20、21号等格子,查询图3(2)中的表格,发现20号格子有“丰台区园林绿化局”且离小亮最近,显示小亮“在丰台区园林绿化局附近”。

    3 数据检索原理


    反地理编码服务将包含名称和经纬度等信息的点、线、面数据映射到编好号的格子中,然后以格子编号为 Key 生成索引文件。检索时,通过传入的坐标所在的格子快速查出该坐标附近的数据。然而一次完整的数据更新周期比较长,为了方便数据快速更新,我们增加了轻量“增量索引”的设计。


    【系统架构】


    如图4所示,我们可以在WEB页面上编辑数据后提交到“数据更新服务”,数据更新服务会将该数据存入数据库,数据定期从数据库更新到增量索引库中。检索时,检索服务同时检索本地索引库和增量索引库,新增的数据便能检索出来了。


    4 通过增量库实现快速添加数据


    图5进一步说明了增量索引库的生成过程。当地图上缺少“莲花池公园”时,我们通过Web页面在地图上加工出这条数据,然后提交给“数据更新服务”,数据更新服务生成莲花池公园对应的所有格子的编号,并将该条数据和编号一起存入数据库中。检索服务定期从数据库中获取到增量数据,并以格子的编号为key建立增量索引库。


    5 增量索引库生成过程


    数据库中的数据很容易添加和删除,而存储在数据库中的数据已经生成了小方格的编码,因此检索服务更新增量索引库的速度很快。


     【新系统特点】


    1. 高可用性:服务可用性长期稳定在99.999%以上

    2. 支持高效的地理空间索引,QPS每秒上万

    3. 支持用户个性化数据,可以对定位点提供个性化的位置描述信息。

    4. 数据问题可以快速修正沉淀。


    【本文版权归“百度地图开放平台”所有,转载请与百度地图开放平台取得联系】


    展开全文
  • 今天这篇博客说的是地图和定位的问题,不一样的是,这是在flutter中处理地图,定位,反地理编码。 先看下做出来的效果如何: 目前用到的都是模拟数据,真实场景大家自己接入数据即可。 这里的功能分为几部分: 1....

    今天这篇博客说的是地图和定位的问题,不一样的是,这是在flutter中处理地图,定位,反地理编码。

    先看下做出来的效果如何:
    在这里插入图片描述

    目前用到的都是模拟数据,真实场景大家自己接入数据即可。

    这里的功能分为几部分:

    1.百度地图;
    2.定位功能;(百度地图提供了定位功能,需要单独引入,但是这里选择使用其他的基于LBS的定位)
    3.反地理编码;
    4.抽屉功能;(就是这个可以拖拽的列表,可展开,可折叠)
    5.滑动按钮;
    6.插旗和更新位置信息;
    7.总结和页面完整代码。
    

    然后我们来一步步说明怎么来使用这些功能:

    1.百度地图


    百度地图flutter插件接入地址:http://lbsyun.baidu.com/index.php?title=flutter/loc

    至于接入的部分,大家参照文档来接入,不再赘述。
    引入地图库:

      flutter_baidu_mapapi_map: ^2.0.0
    

    地图在接入后需要初始化:

        // 百度地图sdk初始化鉴权
        if (Platform.isIOS) {
          BMFMapSDK.setApiKeyAndCoordType(
              'xxxxxxxxxxxxxxxxxxxx', BMF
    展开全文
  • 界面有点粗糙,不过功能都能实现
  • 谷歌地图Geocoding说明:内容主要来自谷歌官网的文档,谷歌地图android api地理和反地理编码反应迟钝内容有时不准确,这里使用的googlemap的webapi接口。嗯,需要vpn这个不多做说明了... 什么是地理编码? ...

    谷歌地图Geocoding说明:内容主要来自谷歌官网的文档,谷歌地图android api地理和反地理编码反应迟钝内容有时不准确,这里使用的googlemap的webapi接口。嗯,需要vpn这个不多做说明了...

    什么是地理编码?

    地理编码是将地址(如“1600 Amphitheatre Parkway, Mountain View, CA”)转换为地理坐标(如纬度 37.423021 和经度 -122.083739)的过程,您可以借此在地图上放置标记,或在地图上定位。

    反向地理编码是将地理坐标转换为可人工读取的地址的过程。Google Maps Geocoding API 的反向地理编码服务还可让您找到对应于给定的地点 ID 的地址。

    Google Maps Geocoding API 提供了一种通过 HTTP 请求来访问这些服务的直接方法。

    开始前的准备工作

    本文档面向需要使用其中一个 Google Maps API 提供的地图中地理编码数据的网站和移动开发者。

    此服务通常用于对(预先知道的)静态地址进行地理编码,以便将应用内容放置到地图上;例如,此服务用于实时响应用户输入。有关动态地理编码(例如,在某个用户界面元素内)的信息,请查阅关于 Google Maps JavaScript API 客户端地理编码器和/或 Google Play 服务 Location API 的文档。

    地理编码是一项时间和资源密集型任务。只要有可能,请(使用此处所描述的 Google Maps Geocoding API 或其他地理编码服务)对已知地址进行预地理编码,并将结果存储在您自己的设计的临时缓存中。

    要使用 Google Maps Geocoding API,您需要一个 API 密钥。

    Google Maps Geocoding API 请求格式

    Google Maps Geocoding API 请求必须采用以下形式:

     
    https://maps.googleapis.com/maps/api/geocode/output?parameters

    其中,output 可以是以下值之一:

    • json(推荐)指示以 JavaScript 对象标记 (JSON) 输出
    • xml 指示以 XML 格式输出

    如需通过 HTTP 访问 Google Maps Geocoding API,请使用:

     
    http://maps.googleapis.com/maps/api/geocode/output?parameters

    对于请求中包含敏感用户数据(例如用户的位置)的应用,不建议使用 HTTP。

    有些参数是必填的,而有些是可选的。依照 URL 的标准,参数都使用“与”字符 (&) 分隔。

    Google Maps API for Work 用户必须在其地理编码请求中包含有效的 client 和 signature 参数。如需了解详细信息,请参阅 Google Maps API for Work Web Services

    因为每种请求类型使用的参数不同,所以本页面的其余部分分别介绍了地理编码反向地理编码

    地理编码(纬度/经度查询)

    地理编码请求中的必填参数:

    • address – 要进行地理编码的街道地址,采用相关国家/地区的全国邮政服务所使用的格式。应避免其他地址元素,例如企业名称以及单元号、套房号或楼层。 
            
      components – 您希望获得其地理编码的组成部分过滤器。如需了解详细信息,请参阅组成部分过滤。如果提供了 address,还将接受组成部分过滤器作为可选参数。
    • key – 您的应用的 API 密钥。此密钥可以标识您的应用,以便进行配额管理。 

    地理编码请求中的可选参数:

    • bounds – 视口的边框,在其中可以使地理编码结果更显著地发生偏向。此参数只会影响,而不会完全限制地理编码器中的结果。(如需了解详细信息,请参阅下面的视口偏向。)
    • language – 返回结果时使用的语言。请参阅支持的区域语言列表。请注意,我们会经常更新支持的语言,因此,此列表可能并不全面。如果未提供 language,地理编码器将尽可能尝试使用发送请求区域的当地语言。
    • region – 地区代码,指定为一个 ccTLD(“顶级域名”)双字符值。此参数只会影响,而不会完全限制地理编码器中的结果。(如需了解详细信息,请参阅下面的地区偏向。)
    • components – 组成部分过滤器,用管道符号 (|) 分隔。每个组成部分过滤器由一个 component:value 对组成,将完全限制地理编码器中的结果。如需了解详细信息,请参阅下面的组成部分过滤
    • Supported Languages
      Language Code Language Language Code Language
      ar Arabic kn Kannada
      bg Bulgarian ko Korean
      bn Bengali lt Lithuanian
      ca Catalan lv Latvian
      cs Czech ml Malayalam
      da Danish mr Marathi
      de German nl Dutch
      el Greek no Norwegian
      en English pl Polish
      en-AU English (Australian) pt Portuguese
      en-GB English (Great Britain) pt-BR Portuguese (Brazil)
      es Spanish pt-PT Portuguese (Portugal)
      eu Basque ro Romanian
      eu Basque ru Russian
      fa Farsi sk Slovak
      fi Finnish sl Slovenian
      fil Filipino sr Serbian
      fr French sv Swedish
      gl Galician ta Tamil
      gu Gujarati te Telugu
      hi Hindi th Thai
      hr Croatian tl Tagalog
      hu Hungarian tr Turkish
      id Indonesian uk Ukrainian
      it Italian vi Vietnamese
      iw Hebrew zh-CN Chinese (Simplified)
      ja Japanese zh-TW Chinese (Traditional)

    地理编码响应

    地理编码响应以 URL 请求路径中 output 标志指示的格式返回。

    在此示例中,Google Maps Geocoding API 请求针对“1600 Amphitheatre Parkway, Mountain View, CA”查询的 json 响应。

    此请求演示了如何使用 JSON output 标志:

     
    https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY

    此请求演示了如何使用 XML output 标志:

     
    https://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY

    点击下面的选项卡,查看 JSON 和 XML 响应示例。

    JSONXML
      
    {
       
    "results" : [
         
    {
             
    "address_components" : [
               
    {
                   
    "long_name" : "1600",
                   
    "short_name" : "1600",
                   
    "types" : [ "street_number" ]
               
    },
               
    {
                   
    "long_name" : "Amphitheatre Pkwy",
                   
    "short_name" : "Amphitheatre Pkwy",
                   
    "types" : [ "route" ]
               
    },
               
    {
                   
    "long_name" : "Mountain View",
                   
    "short_name" : "Mountain View",
                   
    "types" : [ "locality", "political" ]
               
    },
               
    {
                   
    "long_name" : "Santa Clara County",
                   
    "short_name" : "Santa Clara County",
                   
    "types" : [ "administrative_area_level_2", "political" ]
               
    },
               
    {
                   
    "long_name" : "California",
                   
    "short_name" : "CA",
                   
    "types" : [ "administrative_area_level_1", "political" ]
               
    },
               
    {
                   
    "long_name" : "United States",
                   
    "short_name" : "US",
                   
    "types" : [ "country", "political" ]
               
    },
               
    {
                   
    "long_name" : "94043",
                   
    "short_name" : "94043",
                   
    "types" : [ "postal_code" ]
               
    }
             
    ],
             
    "formatted_address" : "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA",
             
    "geometry" : {
               
    "location" : {
                   
    "lat" : 37.4224764,
                   
    "lng" : -122.0842499
               
    },
               
    "location_type" : "ROOFTOP",
               
    "viewport" : {
                   
    "northeast" : {
                     
    "lat" : 37.4238253802915,
                     
    "lng" : -122.0829009197085
                   
    },
                   
    "southwest" : {
                     
    "lat" : 37.4211274197085,
                     
    "lng" : -122.0855988802915
                   
    }
               
    }
             
    },
             
    "place_id" : "ChIJ2eUgeAK6j4ARbn5u_wAGqWA",
             
    "types" : [ "street_address" ]
         
    }
       
    ],
       
    "status" : "OK"
    }

    请注意,JSON 响应包含两个根元素:

    • "status" 包含请求的元数据。请参阅下面的状态代码
    • "results" 包含一个有关地理编码地址信息和几何信息的数组。

    虽然当地址查询比较模糊时,地理编码器可能返回多个结果,但通常地址查找只返回 "results" 数组中的一个条目。

    请注意,如果您想从结果中提取值,通常需要对这些结果进行解析。JSON 的解析相对容易。如需了解一些推荐的设计模式,请参阅解析 JSON

    状态代码

    地理编码响应对象中的 "status" 字段包含了请求的状态,还可能包含调试信息,以帮助您查明地理编码不工作的原因。"status" 字段可以包含以下值:

    • "OK" 表示未出现任何错误;已成功解析地址,并且至少返回了一个地理编码。
    • "ZERO_RESULTS" 表示地理编码成功,但未返回任何结果。如果向地理编码器传递了一个不存在 address,就可能会发生这种情况。
    • "OVER_QUERY_LIMIT" 表示您已超出配额。
    • "REQUEST_DENIED" 表示系统已拒绝您的请求。
    • "INVALID_REQUEST" 一般表示缺少查询(addresscomponents 或 latlng)。
    • "UNKNOWN_ERROR" 表示由于服务器发生错误,因此无法处理该请求。如果您重试一次,请求可能会成功

    错误消息

    当地理编码器返回 OK 以外的状态代码时,地理编码响应对象中可能会包含一个附加的 error_message 字段。此字段更详细地说明了给定状态代码背后的原因。

    :此字段不保证始终出现,并且其内容可能会更改。

    结果

    当地理编码器返回结果时,会将这些结果放在一个 (JSON) results 数组中。即使地理编码器没有返回任何结果(例如,如果地址不存在),它仍然会返回一个空的 results 数组。(XML 响应包含零个或更多个 <result> 元素。)

    典型的结果由以下字段组成:

    • types[] 数组表示返回结果的类型。此数组包含一组标记(可能为零个或多个),用于标识结果中所返回特征的类型。例如,“芝加哥”的地理编码返回“locality”,这表明“芝加哥”是一个城市,并且还返回“political”,这表明它是一个政治实体。

    • formatted_address:是一个包含此位置可人工读取的地址的字符串。通常此地址相当于“邮政地址”,有时会因国家/地区而异。(请注意,由于许可限制,某些国家(如英国)不允许发布真实的邮政地址。)此地址通常由一个或多个地址组成部分组成。例如,地址“111 8th Avenue, New York, NY”包含以下地址组成部分:“111”(街道号)、“8th Avenue”(道路)、“New York”(城市)和“NY”(美国的一个州)。这些地址组成部分包含如下所述的附加信息。

    • address_components[] 是包含独立的地址组成部分的数组,如上所述。通常,每个 address_component 均包含:

      • types[],一个表示地址组成部分类型的数组。
      • long_name 是地理编码器返回的地址组成部分的完整文本说明或名称。
      • short_name 是地址组成部分的文本名称缩写(如有)。例如,Alaska 州的地址组成部分可以有 long_name“Alaska”和 short_name“AK”(使用双字母邮政缩写表示)。

      请注意,address_components[] 中包含的地址组成部分可能比 formatted_address 中记录的更多。

    • postcode_localities[] 是一个数组,表示一个邮政编码中包含的所有地方。只有当结果是一个包含多个地方的邮政编码时,才会有此数组。
    • geometry 包含以下信息:

      • location:其中包含地理编码经度、纬度值。对于普通的地址查找,此字段通常是最重要的。
      • location_type 存储有关指定位置的附加数据。目前支持以下值:

        • "ROOFTOP" 表示返回的结果是一个精确的地理编码,我们使其位置信息精确到街道地址的精度。
        • "RANGE_INTERPOLATED" 表示返回的结果反映了两个精确点(例如交叉路口)之间用内插法计算得到的近似值(通常在道路上)。当某个街道地址的 rooftop 地理编码不可用时,通常会返回内插值结果。
        • "GEOMETRIC_CENTER" 表示返回的结果是某个位置(如多段线(例如街道)或多边形(地区))的几何中心。
        • "APPROXIMATE" 表示返回的结果是近似值。
      • viewport 包含用于显示返回结果的推荐视口,指定为两个纬度、经度值,分别定义视口边框的 southwest 和 northeast 角。视口通常用来在向用户显示结果时为该结果加边框。
      • bounds(可选返回)存储可完全包含返回结果的边框。请注意,这些边界可能与推荐的视口不一致。(例如,旧金山包含费拉隆岛,理论上它是这个城市的一部分,但可能不应该在视口中返回。)
    • partial_match 表示虽然地理编码器能够匹配所请求的地址的一部分,但它未能返回原始请求的精确匹配项。您不妨检查一下原始请求中是否有拼写错误和/或地址不完整的情况。

      对于请求中所传递的行政区划内不存在的街道地址,最常发生部分匹配的情况。当请求与同一行政区划中的两个或更多位置相匹配时,也可能会返回部分匹配。例如,“21 Henr St, Bristol, UK”将返回 Henry Street 和 Henrietta Street 这两项部分匹配结果。请注意,如果请求中包含拼写错误的地址组成部分,地理编码服务可能会建议一个备选地址。以这种方式触发的建议也将标记为部分匹配。

    • place_id 是唯一一个可以与其他 Google API 结合使用的标识符。例如,您可以在 Google Places API 请求中使用 place_id 获取当地企业的详情,如电话号码、营业时间、用户评论等。请参阅地点 ID 概览

    由于不能保证对 Google Maps Geocoding API 请求的个别响应的格式准确,因此您永远不应该假定元素处于绝对位置。(特别是,Geocoding API 响应中 address_components 的数量会根据请求的地址而有所不同,并且可以随时间而改变。)相反,您应该解析响应,并通过表达式选择合适的值。如需了解详细信息,请参阅解析 Web 服务响应

    地址类型和地址组成部分类型

    结果中的 types[] 数组表示地址类型。地址类型的示例包括街道地址、国家/地区或政治实体。在 address_components[] 中也有一个 types[] 数组,用来表示地址各个部分的类型。示例包括门牌号码或国家/地区。(以下是类型的完整列表。)地址可能有多种类型。这些类型可能会被视为“标记”。例如,许多城市都标有 political 和 locality 类型。

    地理编码器以地址类型和地址组成部分类型数组这两种形式支持并返回以下类型:

    • street_address 表示精确的街道地址。
    • route:表示已命名的路线(例如“US 101”)
    • intersection:表示主要交叉路口,通常是两条主要道路的交叉路口
    • political:表示政治实体。通常,这种类型表示某个民政管理部门的多边形
    • country:表示国家政治实体,通常是由地理编码器返回的最高级别类型
    • administrative_area_level_1:表示国家/地区级别以下的一级行政实体。在美国,这种行政级别就是州。并非所有国家都设有这类行政级别
    • administrative_area_level_2:表示国家/地区级别以下的二级行政实体。在美国,这种行政级别就是县。并非所有国家都设有这类行政级别
    • administrative_area_level_3:表示国家/地区级别以下的三级行政实体。此类型表示较小的行政区划单位。并非所有国家都设有这类行政级别
    • administrative_area_level_4:表示国家/地区级别以下的四级行政实体。此类型表示较小的行政区划单位。并非所有国家都设有这类行政级别
    • administrative_area_level_5:表示国家/地区级别以下的五级行政实体。此类型表示较小的行政区划单位。并非所有国家都设有这类行政级别
    • colloquial_area:表示实体的常用替代名称
    • locality 表示合并的城市或城镇政治实体。
    • ward 表示一种特定的日本行政区划类型,以便于区分某个日本地址中的多个行政区划组成部分。
    • sublocality:表示 locality 以下的一级行政实体。某些位置可能会收到其他类型之一:从 sublocality_level_1 到 sublocality_level_5。每个 sublocality 级别都是一个行政实体。数字越大,表示的地理区域越小
    • neighborhood 表示已命名的街区
    • premise 表示已命名的位置,通常是具有常见名称的一栋或一群建筑物
    • subpremise 表示指定位置以下的一级实体,通常是同名建筑群中的单个建筑物
    • postal_code 表示邮政编码,用于国内的地址邮寄。
    • natural_feature:表示著名的自然景观
    • airport:表示机场
    • park:表示已命名的公园。
    • point_of_interest 表示已命名的景点。通常,这些“景点”是不容易归入其他类别的著名地方实体,如“帝国大厦”或“自由女神像”。

    空的类型列表表示特殊的地址组成部分没有对应的已知类型,例如法国的地方 (Lieu-dit)。

    除了上述类型之外,地址组成部分还可能包括下列类型。

    :此列表并不全面,并且随时可能更改。

    • floor:表示某个建筑物地址的楼层
    • establishment 通常表示某个尚未归类的地方。
    • point_of_interest 表示已命名的景点。
    • parking 表示停车场或停车设施。
    • post_box 表示特定的邮政信箱。
    • postal_town 表示地理区域的分组,如 locality 和 sublocality,在某些国家/地区用于邮寄地址。
    • room 表示某个建筑物地址的房间。
    • street_number 表示确切的门牌号码。
    • bus_stationtrain_station 和 transit_station 表示巴士、火车或公交车站的位置。

    视口偏向

    在地理编码请求中,您可以指示让地理编码服务倾向于使用某个给定视口(表示为边框)中的结果。您可以通过设置 bounds 参数在请求 URL 中执行此操作。请注意,偏向只是倾向于使用边界以内的结果;如果在这些边界之外存在更相关的结果,也可能会将这些结果包括在内。

    bounds 参数定义了此边框的西南角和东北角的纬度/经度坐标,并使用管道字符 (|) 分隔这些坐标。

    例如,“温内特卡”的地理编码一般会返回芝加哥的以下郊区:

    请求:

     
    https://maps.googleapis.com/maps/api/geocode/json?address=Winnetka&key=YOUR_API_KEY

    响应:

     
    {
       
    "results" : [
         
    {
             
    "address_components" : [
               
    {
                   
    "long_name" : "Winnetka",
                   
    "short_name" : "Winnetka",
                   
    "types" : [ "locality", "political" ]
               
    },
               
    {
                   
    "long_name" : "New Trier",
                   
    "short_name" : "New Trier",
                   
    "types" : [ "administrative_area_level_3", "political" ]
               
    },
               
    {
                   
    "long_name" : "Cook County",
                   
    "short_name" : "Cook County",
                   
    "types" : [ "administrative_area_level_2", "political" ]
               
    },
               
    {
                   
    "long_name" : "Illinois",
                   
    "short_name" : "IL",
                   
    "types" : [ "administrative_area_level_1", "political" ]
               
    },
               
    {
                   
    "long_name" : "United States",
                   
    "short_name" : "US",
                   
    "types" : [ "country", "political" ]
               
    }
             
    ],
             
    "formatted_address" : "Winnetka, IL, USA",
             
    "geometry" : {
               
    "bounds" : {
                   
    "northeast" : {
                     
    "lat" : 42.1282269,
                     
    "lng" : -87.7108162
                   
    },
                   
    "southwest" : {
                     
    "lat" : 42.0886089,
                     
    "lng" : -87.7708629
                   
    }
               
    },
               
    "location" : {
                   
    "lat" : 42.10808340000001,
                   
    "lng" : -87.735895
               
    },
               
    "location_type" : "APPROXIMATE",
               
    "viewport" : {
                   
    "northeast" : {
                     
    "lat" : 42.1282269,
                     
    "lng" : -87.7108162
                   
    },
                   
    "southwest" : {
                     
    "lat" : 42.0886089,
                     
    "lng" : -87.7708629
                   
    }
               
    }
             
    },
             
    "place_id" : "ChIJW8Va5TnED4gRY91Ng47qy3Q",
             
    "types" : [ "locality", "political" ]
         
    }
       
    ],
       
    "status" : "OK"
    }

    然而,添加一个为洛杉矶圣费尔南多谷定义边框的 bounds 参数会使得此地理编码返回位于该位置的名为“温内特卡”的邻近地区:

    请求:

     
    https://maps.googleapis.com/maps/api/geocode/json?address=Winnetka&bounds=34.172684,-118.604794|34.236144,-118.500938&key=YOUR_API_KEY

    响应:

     
    {
       
    "results" : [
         
    {
             
    "address_components" : [
               
    {
                   
    "long_name" : "Winnetka",
                   
    "short_name" : "Winnetka",
                   
    "types" : [ "neighborhood", "political" ]
               
    },
               
    {
                   
    "long_name" : "Los Angeles",
                   
    "short_name" : "LA",
                   
    "types" : [ "locality", "political" ]
               
    },
               
    {
                   
    "long_name" : "Los Angeles County",
                   
    "short_name" : "Los Angeles County",
                   
    "types" : [ "administrative_area_level_2", "political" ]
               
    },
               
    {
                   
    "long_name" : "California",
                   
    "short_name" : "CA",
                   
    "types" : [ "administrative_area_level_1", "political" ]
               
    },
               
    {
                   
    "long_name" : "United States",
                   
    "short_name" : "US",
                   
    "types" : [ "country", "political" ]
               
    }
             
    ],
             
    "formatted_address" : "Winnetka, Los Angeles, CA, USA",
             
    "geometry" : {
               
    "bounds" : {
                   
    "northeast" : {
                     
    "lat" : 34.2355209,
                     
    "lng" : -118.5534191
                   
    },
                   
    "southwest" : {
                     
    "lat" : 34.1854649,
                     
    "lng" : -118.588536
                   
    }
               
    },
               
    "location" : {
                   
    "lat" : 34.2048586,
                   
    "lng" : -118.5739621
               
    },
               
    "location_type" : "APPROXIMATE",
               
    "viewport" : {
                   
    "northeast" : {
                     
    "lat" : 34.2355209,
                     
    "lng" : -118.5534191
                   
    },
                   
    "southwest" : {
                     
    "lat" : 34.1854649,
                     
    "lng" : -118.588536
                   
    }
               
    }
             
    },
             
    "place_id" : "ChIJ0fd4S_KbwoAR2hRDrsr3HmQ",
             
    "types" : [ "neighborhood", "political" ]
         
    }
       
    ],
       
    "status" : "OK"
    }

    地区偏向

    在地理编码响应中,Google Maps Geocoding API 返回受发送请求地区(通常是国家)影响的地址结果。例如,在美国的某个区域和在西班牙搜索“San Francisco”,可能会返回不同的结果。

    您可以使用 region 参数将 Google Maps Geocoding API 设置为返回偏向于特定地区的结果。该参数带有指定地区偏向的 ccTLD(国家代码顶级域)自变量。大多数 ccTLD 代码与 ISO 3166-1 代码相同,但有一些明显的例外。例如,英国的国家代码顶级域名为“uk”(.co.uk),而其 ISO 3166-1 代码却是“gb”(专指“大不列颠及北爱尔兰联合王国”这一实体)。

    地理编码结果可以偏向于正式推出了主要 Google Maps 应用的每个区域。请注意,偏向只是倾向于使用某个特定区域的结果;如果在此区域以外存在更相关的结果,也可能会将这些结果包括在内。

    例如,由于 Google Maps Geocoding API 的默认区域设置为美国,因此“Toledo”的地理编码返回以下结果。请求:

     
    https://maps.googleapis.com/maps/api/geocode/json?address=Toledo&key=YOUR_API_KEY

    响应:

     
    {
       
    "results" : [
         
    {
             
    "address_components" : [
               
    {
                   
    "long_name" : "Toledo",
                   
    "short_name" : "Toledo",
                   
    "types" : [ "locality", "political" ]
               
    },
               
    {
                   
    "long_name" : "Lucas County",
                   
    "short_name" : "Lucas County",
                   
    "types" : [ "administrative_area_level_2", "political" ]
               
    },
               
    {
                   
    "long_name" : "Ohio",
                   
    "short_name" : "OH",
                   
    "types" : [ "administrative_area_level_1", "political" ]
               
    },
               
    {
                   
    "long_name" : "United States",
                   
    "short_name" : "US",
                   
    "types" : [ "country", "political" ]
               
    }
             
    ],
             
    "formatted_address" : "Toledo, OH, USA",
             
    "geometry" : {
               
    "bounds" : {
                   
    "northeast" : {
                     
    "lat" : 41.732844,
                     
    "lng" : -83.4547053
                   
    },
                   
    "southwest" : {
                     
    "lat" : 41.580266,
                     
    "lng" : -83.69423700000002
                   
    }
               
    },
               
    "location" : {
                   
    "lat" : 41.6639383,
                   
    "lng" : -83.55521200000001
               
    },
               
    "location_type" : "APPROXIMATE",
               
    "viewport" : {
                   
    "northeast" : {
                     
    "lat" : 41.732844,
                     
    "lng" : -83.4547053
                   
    },
                   
    "southwest" : {
                     
    "lat" : 41.580266,
                     
    "lng" : -83.69423700000002
                   
    }
               
    }
             
    },
             
    "place_id" : "ChIJeU4e_C2HO4gRRcM6RZ_IPHw",
             
    "types" : [ "locality", "political" ]
         
    },
         
    {
             
    "address_components" : [
               
    {
                   
    "long_name" : "Toledo",
                   
    "short_name" : "Toledo",
                   
    "types" : [ "locality", "political" ]
               
    },
               
    {
                   
    "long_name" : "Lincoln County",
                   
    "short_name" : "Lincoln County",
                   
    "types" : [ "administrative_area_level_2", "political" ]
               
    },
               
    {
                   
    "long_name" : "Oregon",
                   
    "short_name" : "OR",
                   
    "types" : [ "administrative_area_level_1", "political" ]
               
    },
               
    {
                   
    "long_name" : "United States",
                   
    "short_name" : "US",
                   
    "types" : [ "country", "political" ]
               
    }
             
    ],
             
    "formatted_address" : "Toledo, OR, USA",
             
    "geometry" : {
               
    "bounds" : {
                   
    "northeast" : {
                     
    "lat" : 44.6383219,
                     
    "lng" : -123.9129439
                   
    },
                   
    "southwest" : {
                     
    "lat" : 44.598776,
                     
    "lng" : -123.954585
                   
    }
               
    },
               
    "location" : {
                   
    "lat" : 44.621507,
                   
    "lng" : -123.9384478
               
    },
               
    "location_type" : "APPROXIMATE",
               
    "viewport" : {
                   
    "northeast" : {
                     
    "lat" : 44.6383219,
                     
    "lng" : -123.9129439
                   
    },
                   
    "southwest" : {
                     
    "lat" : 44.598776,
                     
    "lng" : -123.954585
                   
    }
               
    }
             
    },
             
    "place_id" : "ChIJmcjO1AjUwVQRDsRYrfWvzyo",
             
    "types" : [ "locality", "political" ]
         
    },
         
    {
             
    "address_components" : [
               
    {
                   
    "long_name" : "Toledo",
                   
    "short_name" : "Toledo",
                   
    "types" : [ "locality", "political" ]
               
    },
               
    {
                   
    "long_name" : "Toledo",
                   
    "short_name" : "Toledo",
                   
    "types" : [ "administrative_area_level_3", "political" ]
               
    },
               
    {
                   
    "long_name" : "Tama County",
                   
    "short_name" : "Tama County",
                   
    "types" : [ "administrative_area_level_2", "political" ]
               
    },
               
    {
                   
    "long_name" : "Iowa",
                   
    "short_name" : "IA",
                   
    "types" : [ "administrative_area_level_1", "political" ]
               
    },
               
    {
                   
    "long_name" : "United States",
                   
    "short_name" : "US",
                   
    "types" : [ "country", "political" ]
               
    }
             
    ],
             
    "formatted_address" : "Toledo, IA, USA",
             
    "geometry" : {
               
    "bounds" : {
                   
    "northeast" : {
                     
    "lat" : 42.00388600000001,
                     
    "lng" : -92.56695289999999
                   
    },
                   
    "southwest" : {
                     
    "lat" : 41.9784431,
                     
    "lng" : -92.60007299999999
                   
    }
               
    },
               
    "location" : {
                   
    "lat" : 41.9972134,
                   
    "lng" : -92.5835266
               
    },
               
    "location_type" : "APPROXIMATE",
               
    "viewport" : {
                   
    "northeast" : {
                     
    "lat" : 42.00388600000001,
                     
    "lng" : -92.56695289999999
                   
    },
                   
    "southwest" : {
                     
    "lat" : 41.9784431,
                     
    "lng" : -92.60007299999999
                   
    }
               
    }
             
    },
             
    "place_id" : "ChIJvwoVNEOE74cR3oQfIk7m6fU",
             
    "types" : [ "locality", "political" ]
         
    },
         
    {
             
    "address_components" : [
               
    {
                   
    "long_name" : "Toledo",
                   
    "short_name" : "Toledo",
                   
    "types" : [ "locality", "political" ]
               
    },
               
    {
                   
    "long_name" : "Lewis County",
                   
    "short_name" : "Lewis County",
                   
    "types" : [ "administrative_area_level_2", "political" ]
               
    },
               
    {
                   
    "long_name" : "Washington",
                   
    "short_name" : "WA",
                   
    "types" : [ "administrative_area_level_1", "political" ]
               
    },
               
    {
                   
    "long_name" : "United States",
                   
    "short_name" : "US",
                   
    "types" : [ "country", "political" ]
               
    },
               
    {
                   
    "long_name" : "98591",
                   
    "short_name" : "98591",
                   
    "types" : [ "postal_code" ]
               
    }
             
    ],
             
    "formatted_address" : "Toledo, WA 98591, USA",
             
    "geometry" : {
               
    "bounds" : {
                   
    "northeast" : {
                     
    "lat" : 46.44799889999999,
                     
    "lng" : -122.8419249
                   
    },
                   
    "southwest" : {
                     
    "lat" : 46.43233009999999,
                     
    "lng" : -122.85575
                   
    }
               
    },
               
    "location" : {
                   
    "lat" : 46.4398305,
                   
    "lng" : -122.846783
               
    },
               
    "location_type" : "APPROXIMATE",
               
    "viewport" : {
                   
    "northeast" : {
                     
    "lat" : 46.44799889999999,
                     
    "lng" : -122.8419249
                   
    },
                   
    "southwest" : {
                     
    "lat" : 46.43233009999999,
                     
    "lng" : -122.85575
                   
    }
               
    }
             
    },
             
    "place_id" : "ChIJPw9m6cb4k1QRyA5L3wI_dRM",
             
    "types" : [ "locality", "political" ]
         
    }
       
    ],
       
    "status" : "OK"
    }

    设置了 region=es(西班牙)后,“Toledo”的地理编码请求将返回西班牙的城市。请求:

     
    https://maps.googleapis.com/maps/api/geocode/json?address=Toledo&region=es&key=YOUR_API_KEY

    响应:

     
    {
       
    "results" : [
         
    {
             
    "address_components" : [
               
    {
                   
    "long_name" : "Toledo",
                   
    "short_name" : "Toledo",
                   
    "types" : [ "locality", "political" ]
               
    },
               
    {
                   
    "long_name" : "Toledo",
                   
    "short_name" : "Toledo",
                   
    "types" : [ "administrative_area_level_4", "political" ]
               
    },
               
    {
                   
    "long_name" : "Vega de Toledo",
                   
    "short_name" : "Vega de Toledo",
                   
    "types" : [ "administrative_area_level_3", "political" ]
               
    },
               
    {
                   
    "long_name" : "Toledo",
                   
    "short_name" : "TO",
                   
    "types" : [ "administrative_area_level_2", "political" ]
               
    },
               
    {
                   
    "long_name" : "Castile-La Mancha",
                   
    "short_name" : "CM",
                   
    "types" : [ "administrative_area_level_1", "political" ]
               
    },
               
    {
                   
    "long_name" : "Spain",
                   
    "short_name" : "ES",
                   
    "types" : [ "country", "political" ]
               
    }
             
    ],
             
    "formatted_address" : "Toledo, Toledo, Spain",
             
    "geometry" : {
               
    "bounds" : {
                   
    "northeast" : {
                     
    "lat" : 39.88605099999999,
                     
    "lng" : -3.9192423
                   
    },
                   
    "southwest" : {
                     
    "lat" : 39.8383676,
                     
    "lng" : -4.0629256
                   
    }
               
    },
               
    "location" : {
                   
    "lat" : 39.8628316,
                   
    "lng" : -4.027323099999999
               
    },
               
    "location_type" : "APPROXIMATE",
               
    "viewport" : {
                   
    "northeast" : {
                     
    "lat" : 39.88605099999999,
                     
    "lng" : -3.9192423
                   
    },
                   
    "southwest" : {
                     
    "lat" : 39.8383676,
                     
    "lng" : -4.0629256
                   
    }
               
    }
             
    },
             
    "place_id" : "ChIJ8f21C60Lag0R_q11auhbf8Y",
             
    "types" : [ "locality", "political" ]
         
    }
       
    ],
       
    "status" : "OK"
    }

    组成部分过滤

    在地理编码响应中,Google Maps Geocoding API 可以返回限制在某个特定区域的地址结果。使用 components 过滤器来指定限制。过滤器由一个 component:value 对列表组成,这些键值对用管道符号 (|) 分隔。只有符合所有过滤器的结果才会被返回。过滤器值支持与其他地理编码请求相同的用于拼写校正和部分匹配的方法。如果地理编码结果部分匹配某个组成部分过滤器,它将在响应中包含 partial_match 字段。

    可以过滤的 components 包括:

    • route 用来匹配路由的长名称或短名称。
    • locality 既可以匹配 locality 类型,也可以匹配 sublocality 类型。
    • administrative_area 用来匹配所有 administrative_area 级别。
    • postal_code 用来匹配 postal_code 和 postal_code_prefix
    • country 用来匹配国家/地区名称或两个字母的 ISO 3166-1 国家/地区代码。

    :要么在地址参数中指定每个地址组成部分,要么将其指定为组成部分过滤器,这两种方式只能选择其一,不可同时使用。这样做可能会导致 ZERO_RESULTS

    设置了 components=country:ES 后,“Santa Cruz”的地理编码将返回西班牙加那利群岛的圣克鲁斯特内里费。请求:

     
    https://maps.googleapis.com/maps/api/geocode/json?address=santa+cruz&components=country:ES&key=YOUR_API_KEY

    响应:

     
    {
       
    "results" : [
         
    {
             
    "address_components" : [
               
    {
                   
    "long_name" : "Santa Cruz de Tenerife",
                   
    "short_name" : "Santa Cruz de Tenerife",
                   
    "types" : [ "locality", "political" ]
               
    },
               
    {
                   
    "long_name" : "Santa Cruz de Tenerife",
                   
    "short_name" : "Santa Cruz de Tenerife",
                   
    "types" : [ "administrative_area_level_4", "political" ]
               
    },
               
    {
                   
    "long_name" : "Anaga",
                   
    "short_name" : "Anaga",
                   
    "types" : [ "administrative_area_level_3", "political" ]
               
    },
               
    {
                   
    "long_name" : "Santa Cruz de Tenerife",
                   
    "short_name" : "TF",
                   
    "types" : [ "administrative_area_level_2", "political" ]
               
    },
               
    {
                   
    "long_name" : "Canarias",
                   
    "short_name" : "CN",
                   
    "types" : [ "administrative_area_level_1", "political" ]
               
    },
               
    {
                   
    "long_name" : "Spain",
                   
    "short_name" : "ES",
                   
    "types" : [ "country", "political" ]
               
    }
             
    ],
             
    "formatted_address" : "Santa Cruz de Tenerife, Santa Cruz de Tenerife, Spain",
             
    "geometry" : {
               
    "bounds" : {
                   
    "northeast" : {
                     
    "lat" : 28.487616,
                     
    "lng" : -16.2356646
                   
    },
                   
    "southwest" : {
                     
    "lat" : 28.4280248,
                     
    "lng" : -16.3370045
                   
    }
               
    },
               
    "location" : {
                   
    "lat" : 28.4636296,
                   
    "lng" : -16.2518467
               
    },
               
    "location_type" : "APPROXIMATE",
               
    "viewport" : {
                   
    "northeast" : {
                     
    "lat" : 28.487616,
                     
    "lng" : -16.2356646
                   
    },
                   
    "southwest" : {
                     
    "lat" : 28.4280248,
                     
    "lng" : -16.3370045
                   
    }
               
    }
             
    },
             
    "place_id" : "ChIJcUElzOzMQQwRLuV30nMUEUM",
             
    "types" : [ "locality", "political" ]
         
    }
       
    ],
       
    "status" : "OK"
    }

    包含组成部分过滤器的查询将只返回匹配该过滤器的地理编码结果。如果没有找到匹配项,地理编码器会返回一个与该过滤器本身相匹配的结果。请求:

     
    https://maps.googleapis.com/maps/api/geocode/json?address=Torun&components=administrative_area:TX|country:US&key=YOUR_API_KEY

    响应:

     
    {
       
    "results" : [
         
    {
             
    "address_components" : [
               
    {
                   
    "long_name" : "Texas",
                   
    "short_name" : "TX",
                   
    "types" : [ "administrative_area_level_1", "political" ]
               
    },
               
    {
                   
    "long_name" : "United States",
                   
    "short_name" : "US",
                   
    "types" : [ "country", "political" ]
               
    }
             
    ],
             
    "formatted_address" : "Texas, USA",
             
    "geometry" : {
               
    "bounds" : {
                   
    "northeast" : {
                     
    "lat" : 36.5007041,
                     
    "lng" : -93.5080389
                   
    },
                   
    "southwest" : {
                     
    "lat" : 25.8371638,
                     
    "lng" : -106.6456461
                   
    }
               
    },
               
    "location" : {
                   
    "lat" : 31.9685988,
                   
    "lng" : -99.9018131
               
    },
               
    "location_type" : "APPROXIMATE",
               
    "viewport" : {
                   
    "northeast" : {
                     
    "lat" : 36.5015087,
                     
    "lng" : -93.5080389
                   
    },
                   
    "southwest" : {
                     
    "lat" : 25.8371638,
                     
    "lng" : -106.6456461
                   
    }
               
    }
             
    },
             
    "partial_match" : true,
             
    "place_id" : "ChIJSTKCCzZwQIYRPN4IGI8c6xY",
             
    "types" : [ "administrative_area_level_1", "political" ]
         
    }
       
    ],
       
    "status" : "OK"
    }

    只有当您提供的过滤器相互排斥时,组成部分过滤才会返回 ZERO_RESULTS 响应。请求:

     
    https://maps.googleapis.com/maps/api/geocode/json?components=administrative_area:TX|country:FR&key=YOUR_API_KEY

    响应:

     
    {
       
    "results" : [],
       
    "status" : "ZERO_RESULTS"
    }

    使用 components 过滤器时,可以在无地址参数的情况下进行查询,但不能在没有值的情况下指定组成部分。请求:

     
    https://maps.googleapis.com/maps/api/geocode/json?components=route:Annegatan|administrative_area:Helsinki|country:Finland&key=YOUR_API_KEY

    响应:

     
    {
       
    "results" : [
         
    {
             
    "address_components" : [
               
    {
                   
    "long_name" : "Annegatan",
                   
    "short_name" : "Annegatan",
                   
    "types" : [ "route" ]
               
    },
               
    {
                   
    "long_name" : "Helsingfors",
                   
    "short_name" : "Helsingfors",
                   
    "types" : [ "administrative_area_level_3", "political" ]
               
    },
               
    {
                   
    "long_name" : "Finland",
                   
    "short_name" : "FI",
                   
    "types" : [ "country", "political" ]
               
    }
             
    ],
             
    "formatted_address" : "Annegatan, Helsingfors, Finland",
             
    "geometry" : {
               
    "bounds" : {
                   
    "northeast" : {
                     
    "lat" : 60.168997,
                     
    "lng" : 24.9427959
                   
    },
                   
    "southwest" : {
                     
    "lat" : 60.1626627,
                     
    "lng" : 24.934
                   
    }
               
    },
               
    "location" : {
                   
    "lat" : 60.1657808,
                   
    "lng" : 24.938451
               
    },
               
    "location_type" : "GEOMETRIC_CENTER",
               
    "viewport" : {
                   
    "northeast" : {
                     
    "lat" : 60.168997,
                     
    "lng" : 24.9427959
                   
    },
                   
    "southwest" : {
                     
    "lat" : 60.1626627,
                     
    "lng" : 24.934
                   
    }
               
    }
             
    },
             
    "place_id" : "ChIJARW7C8sLkkYRgl4je4-RPUM",
             
    "types" : [ "route" ]
         
    },
         
    {
             
    "address_components" : [
               
    {
                   
    "long_name" : "Annevägen",
                   
    "short_name" : "Annevägen",
                   
    "types" : [ "route" ]
               
    },
               
    {
                   
    "long_name" : "Vanda",
                   
    "short_name" : "Vanda",
                   
    "types" : [ "administrative_area_level_3", "political" ]
               
    },
               
    {
                   
    "long_name" : "Finland",
                   
    "short_name" : "FI",
                   
    "types" : [ "country", "political" ]
               
    },
               
    {
                   
    "long_name" : "01420",
                   
    "short_name" : "01420",
                   
    "types" : [ "postal_code" ]
               
    }
             
    ],
             
    "formatted_address" : "Annevägen, 01420 Vanda, Finland",
             
    "geometry" : {
               
    "bounds" : {
                   
    "northeast" : {
                     
    "lat" : 60.3282738,
                     
    "lng" : 25.1162163
                   
    },
                   
    "southwest" : {
                     
    "lat" : 60.32564009999999,
                     
    "lng" : 25.1076474
                   
    }
               
    },
               
    "location" : {
                   
    "lat" : 60.3271069,
                   
    "lng" : 25.1118046
               
    },
               
    "location_type" : "GEOMETRIC_CENTER",
               
    "viewport" : {
                   
    "northeast" : {
                     
    "lat" : 60.3283059302915,
                     
    "lng" : 25.1162163
                   
    },
                   
    "southwest" : {
                     
    "lat" : 60.32560796970849,
                     
    "lng" : 25.1076474
                   
    }
               
    }
             
    },
             
    "partial_match" : true,
             
    "place_id" : "ChIJ3UJCNt4GkkYR8-_a8Dh25kA",
             
    "types" : [ "route" ]
         
    },
         
    {
             
    "address_components" : [
               
    {
                   
    "long_name" : "Anneplatsen",
                   
    "short_name" : "Anneplatsen",
                   
    "types" : [ "route" ]
               
    },
               
    {
                   
    "long_name" : "Helsingfors",
                   
    "short_name" : "Helsingfors",
                   
    "types" : [ "administrative_area_level_3", "political" ]
               
    },
               
    {
                   
    "long_name" : "Finland",
                   
    "short_name" : "FI",
                   
    "types" : [ "country", "political" ]
               
    },
               
    {
                   
    "long_name" : "00100",
                   
    "short_name" : "00100",
                   
    "types" : [ "postal_code" ]
               
    }
             
    ],
             
    "formatted_address" : "Anneplatsen, 00100 Helsingfors, Finland",
             
    "geometry" : {
               
    "bounds" : {
                   
    "northeast" : {
                     
    "lat" : 60.1695664,
                     
    "lng" : 24.9357125
                   
    },
                   
    "southwest" : {
                     
    "lat" : 60.168997,
                     
    "lng" : 24.934
                   
    }
               
    },
               
    "location" : {
                   
    "lat" : 60.1692741,
                   
    "lng" : 24.9348016
               
    },
               
    "location_type" : "GEOMETRIC_CENTER",
               
    "viewport" : {
                   
    "northeast" : {
                     
    "lat" : 60.17063068029151,
                     
    "lng" : 24.9362052302915
                   
    },
                   
    "southwest" : {
                     
    "lat" : 60.1679327197085,
                     
    "lng" : 24.9335072697085
                   
    }
               
    }
             
    },
             
    "partial_match" : true,
             
    "place_id" : "ChIJeahMqswLkkYR2vQfG1nHI3M",
             
    "types" : [ "route" ]
         
    }
       
    ],
       
    "status" : "OK"
    }

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

    术语地理编码一般是指将可人工读取的地址转换为地图上的某个位置。与之相反,将地图上的某个位置转换为可人工读取的地址的过程,就称为反向地理编码

    必填参数:您必须在反向地理编码请求中提供下列参数之一,但不可同时提供这两个参数:

    • 要么:latlng – 经纬度值,用于指定希望获得其最接近的、可人工读取的地址的位置。
    • 或者:place_id – 您希望获得其可人工读取的地址的地方的地点 ID。地点 ID 是唯一一个可以与其他 Google API 结合使用的标识符。例如,您可以使用由 Google Maps Roads API 返回的 placeID 来获取某个拍摄点的地址。如需了解有关地点 ID 的详细信息,请参阅地点 ID 概览。只有当请求包括 API 密钥或 Google Maps API for Work 客户端 ID 时,才能指定地点 ID。

    反向地理编码请求中的可选参数:

    您可以将下列可选参数包括在反向地理编码请求中:

    • key – 您的应用的 API 密钥,可从 Google API Console 获得。此密钥可以标识您的应用,以便进行配额管理。
    • language – 返回结果时使用的语言。请参阅支持的区域语言列表。请注意,我们会经常更新支持的语言,因此,此列表可能并不全面。如果未提供 language,地理编码器将尽可能尝试使用发送请求区域的当地语言。
    • result_type – 一个或多个地址类型,用管道符号 (|) 分隔。地址类型的示例:countrystreet_addresspostal_code。如需查看允许值的完整列表,请参阅此页面上的地址类型。如果指定了一种类型,会将结果限制于这种类型。如果指定了多种类型,该 API 将返回匹配其中任何类型的所有地址。:此参数仅适用于包括 API 密钥或客户端 ID 的请求。
    • location_type – 一个或多个位置类型,用管道符号 (|) 分隔。如果指定了一种类型,会将结果限制于这种类型。如果指定了多种类型,该 API 将返回匹配其中任何类型的所有地址。:此参数仅适用于包括 API 密钥或客户端 ID 的请求。可支持以下值:
      • "ROOFTOP" 将结果限制为我们使其位置信息精确到街道地址精度的地址。
      • "RANGE_INTERPOLATED" 将结果限制为反映了两个精确点(例如交叉路口)之间用内插法计算得到的近似值(通常在道路上)的地址。内插的范围通常表示某个街道地址的 rooftop 地理编码不可用。
      • "GEOMETRIC_CENTER" 将结果限制为某个位置(如多段线(例如街道)或多边形(地区))的几何中心。
      • "APPROXIMATE" 将结果限制为是近似值的地址。

    如果 result_type 和 location_type 限制同时存在,那么该 API 将只返回同时匹配 result_type和 location_type 限制的结果。

    纬度/经度的反向地理编码

    以下查询包含了布鲁克林某个位置的纬度/经度值:

     
    https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY

    :确保在将纬度和经度值传入 latlng 参数时,两者之间没有空格。

    上述查询返回以下结果:

     
    {
       
    "results" : [
         
    {
             
    "address_components" : [
               
    {
                   
    "long_name" : "277",
                   
    "short_name" : "277",
                   
    "types" : [ "street_number" ]
               
    },
               
    {
                   
    "long_name" : "Bedford Avenue",
                   
    "short_name" : "Bedford Ave",
                   
    "types" : [ "route" ]
               
    },
               
    {
                   
    "long_name" : "Williamsburg",
                   
    "short_name" : "Williamsburg",
                   
    "types" : [ "neighborhood", "political" ]
               
    },
               
    {
                   
    "long_name" : "Brooklyn",
                   
    "short_name" : "Brooklyn",
                   
    "types" : [ "sublocality", "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" ]
               
    }
             
    ],
             
    "formatted_address" : "277 Bedford Avenue, Brooklyn, NY 11211, USA",
             
    "geometry" : {
               
    "location" : {
                   
    "lat" : 40.714232,
                   
    "lng" : -73.9612889
               
    },
               
    "location_type" : "ROOFTOP",
               
    "viewport" : {
                   
    "northeast" : {
                     
    "lat" : 40.7155809802915,
                     
    "lng" : -73.9599399197085
                   
    },
                   
    "southwest" : {
                     
    "lat" : 40.7128830197085,
                     
    "lng" : -73.96263788029151
                   
    }
               
    }
             
    },
             
    "place_id" : "ChIJd8BlQ2BZwokRAFUEcm_qrcA",
             
    "types" : [ "street_address" ]
         
    },

     
    ... Additional results[] ...

    请注意,反向地理编码器返回了多个结果。"formatted_address" 的结果不仅有邮政地址,还包括对某个位置的任何地理命名方式。例如,对芝加哥市的某个点进行地理编码时,地理编码的点可以表示为街道地址、城市(芝加哥)、所在州(伊利诺伊州)或国家/地区(美国)。所有这些都是地理编码器的“地址”。反向地理编码器返回这些类型中的任何一种作为有效结果。

    反向地理编码器会匹配政治实体(国家/地区、省、市和街区)、街道地址及邮政编码。

    由以前的查询返回的 formatted_address 值的完整列表如下所示。

     
    "formatted_address" : "277 Bedford Avenue, Brooklyn, NY 11211, USA",
    "formatted_address" : "Grand St/Bedford Av, Brooklyn, NY 11211, USA",
    "formatted_address" : "Grand St/Bedford Av, Brooklyn, NY 11249, USA",
    "formatted_address" : "Bedford Av/Grand St, Brooklyn, NY 11211, USA",
    "formatted_address" : "Brooklyn, NY 11211, USA",
    "formatted_address" : "Williamsburg, Brooklyn, NY, USA",
    "formatted_address" : "Brooklyn, NY, USA",
    "formatted_address" : "New York, NY, USA",
    "formatted_address" : "New York, USA",
    "formatted_address" : "United States",

    通常,返回的地址按精确度从最具体到最不具体的顺序排列;正如本例中所示,最准确的地址在结果中摆在最突出的位置。请注意,我们会返回不同类型的地址,从最具体的街道地址到不那么具体的政治实体,如街区、市、县、州等。如果您想匹配特定类型的地址,请参阅以下有关按类型限制结果的部分。

    注:反向地理编码是一种估计。地理编码器将尝试在某一误差限度范围内查找最接近的可寻址位置。如果没有找到匹配项,地理编码器会返回零个结果。

    地点 ID 的反向地理编码

    以下查询包含了布鲁克林某个位置的地点 ID:

     
    https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJd8BlQ2BZwokRAFUEcm_qrcA&key=YOUR_API_KEY

    上述查询返回以下结果:

     
    {
       
    "results" : [
         
    {
             
    "address_components" : [
               
    {
                   
    "long_name" : "277",
                   
    "short_name" : "277",
                   
    "types" : [ "street_number" ]
               
    },
               
    {
                   
    "long_name" : "Bedford Ave",
                   
    "short_name" : "Bedford Ave",
                   
    "types" : [ "route" ]
               
    },
               
    {
                   
    "long_name" : "Williamsburg",
                   
    "short_name" : "Williamsburg",
                   
    "types" : [ "neighborhood", "political" ]
               
    },
               
    {
                   
    "long_name" : "Brooklyn",
                   
    "short_name" : "Brooklyn",
                   
    "types" : [ "sublocality_level_1", "sublocality", "political" ]
               
    },
               
    {
                   
    "long_name" : "Kings County",
                   
    "short_name" : "Kings County",
                   
    "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" ]
               
    }
             
    ],
             
    "formatted_address" : "277 Bedford Ave, Brooklyn, NY 11211, USA",
             
    "geometry" : {
               
    "location" : {
                   
    "lat" : 40.714232,
                   
    "lng" : -73.9612889
               
    },
               
    "location_type" : "ROOFTOP",
               
    "viewport" : {
                   
    "northeast" : {
                     
    "lat" : 40.7155809802915,
                     
    "lng" : -73.9599399197085
                   
    },
                   
    "southwest" : {
                     
    "lat" : 40.7128830197085,
                     
    "lng" : -73.96263788029151
                   
    }
               
    }
             
    },
             
    "partial_match" : true,
             
    "place_id" : "ChIJd8BlQ2BZwokRAFUEcm_qrcA",
             
    "types" : [ "street_address" ]
         
    }
       
    ],
       
    "status" : "OK"
    }

    受类型限制的反向地理编码

    以下示例将返回的地址限制为位置类型是 ROOFTOP 且地址类型是 street_address 的地址。

     
    https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&location_type=ROOFTOP&result_type=street_address&key=YOUR_API_KEY

    :这些限制只适用于反向地理编码。

    反向地理编码响应

    反向地理编码响应的格式与地理编码响应相同。请参阅地理编码响应。下面是反向地理编码响应中可能出现的状态代码。

    反向地理编码状态代码

    地理编码响应对象中的 "status" 字段包含了请求的状态,还可能包含调试信息,以帮助您查明反向地理编码不工作的原因。"status" 字段可以包含以下值:

    • "OK" 表示未出现任何错误,并且至少返回了一个地址。
    • "ZERO_RESULTS" 表示反向地理编码成功,但未返回任何结果。如果向地理编码器传递了某个偏远位置的 latlng 参数,就可能会发生这种情况。
    • "OVER_QUERY_LIMIT" 表示您已超出配额。
    • "REQUEST_DENIED" 表示系统已拒绝该请求。这可能是因为该请求包含了 result_type 或 location_type 参数,但未包含 API 密钥或客户端 ID。
    • "INVALID_REQUEST" 通常表示下列情况之一:
      • 缺少查询(addresscomponents 或 latlng)。
      • 提供的 result_type 或 location_type 无效。
    • "UNKNOWN_ERROR" 表示由于服务器发生错误,因此无法处理该请求。如果您重试一次,请求可能会成功

    sensor 参数

    Google Maps API 之前要求您将 sensor 参数包括在内,以指示您的应用是否使用传感器来确定用户的位置。但该参数现在不再是必填项。

    展开全文
  • 由于专业需要,经常接触一些地理处理的工具包,文档都是英文... 处理地理数据经常会涉及到地理编码的问题。地理编码指的是将地理信息转化成坐标关系的过程。分为正向和反向的编码。正向的是指将地址信息转换为坐标...
  • 1.使用CLGeocoder可以完成“地理编码”和“反地理编码” 地理编码:根据给定的地名,获得具体的位置信息(比如经纬度、地址的全称等) 反地理编码:根据给定的经纬度,获得具体的位置信息 1)地理编码方法 - ...
  • 没有多余代码 一看就懂 如果下载后不能反地理编码 在info中加入 永远开启定位
  • 反地理编码

    2016-01-04 11:03:31
    /** * 地理编码对象 */ @property (nonatomic ,strong) CLGeocoder *...//pragma mark - 反地理编码 - (IBAction)reverseGeocode; @property (weak, nonatomic) IBOutlet UITextField *longtitudeField; @prope
  • 百度地图----地理编码与反地理编码

    万次阅读 2016-01-21 08:27:34
    百度地图—-地理编码与反地理编码 ONE Goal,ONE Passion ! 地理编码:地理编码—-就是将我们熟悉的地址解析为经纬度.如: 地址 LatLng(坐标) 郑州 34.7568711, 113.663221 好了,代码很简单呢 //新建编码查询对象 ...
  • 用百度地图实现了 关键字搜索 定位 反地理编码搜索 移动地图获取地图中间的经纬度 仿qq发送位置 简单版
  • 当然,似乎这个也没有什么新意,小编也只是将官网的示例稍作整合。 ...需求:实现定位,获取地理位置信息 准备工作: 打开百度地图->进入地图API->创建应用->申请Key->下载SDK IOS调用百度地图V2
  • (仿滴滴叫车界面)百度地图定位+反地理编码
  • 百度地图SDK反地理编码错误

    千次阅读 2017-01-18 18:09:49
    严格按照百度文档做的,通过搜索获取了检索的地址列表之后,取得了当前选择地址行的坐标(经纬度),但是通过输入经纬度去获得具体地址信息时,返回的地址信息是空,在确定使用当前定位的坐标反地理编码没有错误,...
  • //反地理编码  CLGeocoder * geocoder = [[CLGeocoder alloc] init];  [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray*> * _Nullable placemarks, NSError * _Nullable error) { ...
  • ios 定位和反地理编码

    2018-10-16 17:52:49
    //反地理编码 - (void)reverseGeocoder:(CLLocation *)currentLocation { CLGeocoder* geocoder = [[CLGeocoder alloc] init]; [geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *...
  • 1.使用CLGeocoder可以完成“地理编码”和“反地理编码” 地理编码:根据给定的地名,获得具体的位置信息(比如经纬度、地址的全称等) 反地理编码:根据给定的经纬度,获得具体的位置信息   (1)地理编码方法  ...
  • 百度地图定位 + 反地理编码一.百度地图定位1.百度定位配置代码LocationClientOption option = new LocationClientOption(); option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//设置定位...
  • 地理编码和反地理编码 /** * 地理编码和反地理编码 */ private void geoSearch() { //地理编码 GeocodeSearch geocoderSearch = new GeocodeSearch(this); geocoderSearch.setOnGeocodeSearchListen
  • 地理编码器 正向和反向地理编码。 用法 导入package:geocoder/geocoder.dart ,然后使用Geocoder.local来访问设备系统提供的地理编码服务。 例子: import 'package:geocoder/geocoder.dart' ; // From a query ...
  • 反地理编码总结

    2016-04-18 22:27:50
    #import "ViewController.h" #import @interface ViewController ()CLLocationManagerDelegate> @property (weak, nonatomic) IBOutlet UILabel *cityLabel; ...nonatomic) IBOutle
  • Android 百度地图——反地理编码——获取当前位置附近的大厦楼宇 类似添加收货地址选择所在位置或者附近的地点,效果图: 反地理编码就是将地理坐标转换成具体的地址信息,通过百度的坐标定位引擎,插叙出...
  • 仿嘀嘀打车功能,供大家参考学习,安卓版本可以借鉴学习。
  • 百度地图反地理编码问题总结(swift)

    千次阅读 2016-09-19 14:11:42
    百度地图反地理编码swift
  • 前段时间有师兄希望帮忙做一个类似于地理编码之类的东西,就是在表格里输入经纬度以后可以通过程序实现地理位置的批量输出,自己写了半天也没写出来, 在当时实习的项目经理(于老师)的指导下我才明白什么意思,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,083
精华内容 3,233
关键字:

反地理编码