谷歌Geocoding webservice接口获取经纬度信息,由于获取地点的数量级太大,2000多条记录,从response的xml格式中取出该地点的经纬度信息。google有访问限制,如果超出2500次访问,它会停止你的服务,所以这个就是麻烦所在,在调试的时候经常会遇到每个地名的错误回复,原因应该是该地点取不到,因为谷歌地图的webservice也没有该城市的信息,尽管该城市是存在的。或者会遇到over_query_limit 的返回结果,恭喜你,今天的限额已经用完,不过据我发现,大概1小时之后,就可以继续使用了,所以在调试的时候注意这一点。
 

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

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

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

  • json(建议)表示以 JavaScript 对象表示法 (JSON) 的形式输出
  • xml 表示以 XML 的形式输出

有些参数是必需的,有些是可选的。根据网址的标准,所有参数均使用字符 & (&) 分隔。下面枚举了这些参数及其可能的值。

Google Geocoding API 使用以下网址参数定义地址解析请求:

  • address(必需)- 您要进行地址解析的地址。*
  • 或者

  • latlng(必需)- 您希望获取的、距离最近的、可人工读取地址的纬度/经度文本值。*
  • bounds(可选)- 要在其中更显著地偏移地址解析结果的可视区域的边框。(有关详细信息,请参见下文的可视区域偏向。)
  • region(可选)- 区域代码,指定为 ccTLD(“顶级域”)双字符值。(有关详细信息,请参见下文的区域偏向。)
  • language(可选)- 传回结果时所使用的语言。请参见支持的区域语言列表。请注意,我们会经常更新支持的语言,因此该列表可能并不详尽。如果未提供language,地址解析器将尝试尽可能使用发送请求的区域的本地语言。
  • sensor(必需)- 指示地址解析请求是否来自装有位置传感器的设备。该值必须为 true 或 false

* 请注意:您可以传递 address 或 latlng 进行查找。(如果传递 latlng,则地址解析器执行反向地址解析。有关详细信息,请参阅反向地址解析。)

bounds 和 region 参数只会影响地址解析器返回的结果,但不能对其进行完全限制。

访问websevice的结果请参看:http://maps.google.com/maps/api/geocode/xml?address=香港&sensor=false

代码如下:

    XmlDocument xmldoc = new XmlDocument();
            string fn1 = AppDomain.CurrentDomain.BaseDirectory + "CapitalCities1.xml";
            xmldoc.Load(fn1);
            XmlNodeList xl = xmldoc.SelectNodes("HFData/city");
            XmlNode xn;
            location loc;
            for (int i = 0; i < xl.Count; i++)
            {
                xn = xl[i].SelectSingleNode("CityName");
                loc=getlocation(xn.InnerText);
                xl[i].SelectSingleNode("Latitude").InnerText = loc.lat;
                xl[i].SelectSingleNode("Longitude").InnerText = loc.lon;
            }
            xmldoc.Save(fn1);
 private location getlocation(string cityname)
 {
            string url = "http://maps.google.com/maps/api/geocode/xml?address=" + cityname + "&sensor=false";
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            String strConfig = String.Empty;
            using (StreamReader reader = new StreamReader(response.GetResponseStream()))
            {
                strConfig = reader.ReadToEnd();
            }
            XmlDocument node = new XmlDocument();
            node.LoadXml(strConfig);
            location loc = new location();
           loc.lat=node.SelectSingleNode("GeocodeResponse/result/geometry/location/lat").InnerText;
            loc.lon = node.SelectSingleNode("GeocodeResponse/result/geometry/location/lng").InnerText;
            return loc;
}
xml格式示例:
<?xml version="1.0" encoding="utf-8"?>
<HFData>
  <city>
    <StationID>45005</StationID>
    <CityName>香港</CityName>
    <Latitude>22.3964280</Latitude>
    <Longitude>114.1094970</Longitude>
    <Population>137</Population>
    <Province>香港</Province>
  </city>
</HFData>

通过google地图的webservice根据城市名称获取经纬度的更多相关文章

  1. PHP 通过百度API 实现通过城市名称获取经度

    $city = $_GET['city'];print_r(getjw($city));/*** $city 需要查询的地址* $key 百度开发者账号*/function getjw($city){ ...

  2. 基于vue 2.X和高德地图的vue-amap组件获取经纬度

    今天我就讲了一下怎么通过vue和高德地图开发的vue-amap组件来获取经纬度. 这是vue-amap的官网文档:https://elemefe.github.io/vue-amap/#/ 这是我的码 ...

  3. IOS百度地图获取所在的城市名称

    笔者的app要实现定位所在省和城市名称,借此总结巩固一下! @interface VenueListVC : BasePageTableViewVC<BMKLocationServiceDele ...

  4. IOS中使用百度地图定位后获取城市坐标,城市名称,城市编号信息

    IOS中使用百度地图定位后获取城市坐标,城市名称,城市编号信息 /**当获取到定位的坐标后,回调函数*/ - (void)didUpdateBMKUserLocation:(BMKUserLocati ...

  5. Google 地图 API V3 使用入门

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  6. Google 地图 API V3 针对移动设备进行开发

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  7. Google 地图 API V3 之 叠加层

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  8. 根据google地图抓去全国信息- 抓去全国小区以及新建楼盘信息

    本案例由于google每天每个账户能post20000次所以我们需要相对较长的时间来抓去google的数据信息. 主要思路:通过一定的zoom一个相对较大的zoom.我们尽可能的搜索我们的所有数据. ...

  9. Google地图接口API之地图类型(六)

    1. Google 地图- 基本地图类型 Google Maps API 中提供了以下地图类型: MapTypeId.ROADMAP,用于显示默认的道路地图视图 MapTypeId.SATELLITE ...

随机推荐

  1. Git从入门到速成

    什么是Git Git是Linux发明者Linus开发的一款新时代的版本控制系统,那什么是版本控制系统呢?怎么理解?网上一大堆详细的介绍,但是大多枯燥乏味,对于新手也很难理解,这里我只举几个例子. 熟悉 ...

  2. 「CTSC2018」假面

    真~签到题qwq 昨天在考场上先写了个70分暴力dp,然后发现好像可以优化.因为结界技能的模型相当于要求出 对于每个物品,仅仅不选它的背包是什么....  于是当场脑补出两种做法: 前缀和后缀背包卷积 ...

  3. POJ 3469 Dual Core CPU(最小割)

    [题目链接] http://poj.org/problem?id=3469 [题目大意] 有N个模块要在A,B两台机器上执行,在不同机器上有不同的花费 另有M个模块组(a,b),如果a和b在同一台机子 ...

  4. react with JSX for {if…else…}

    在react中用jsx渲染dom的时候经常会遇到if条件判断,然而在jsx中竟是不允许if条件判断的.以下有几种判断方式,可以根据自己的应用场景,挑选适合的 https://blog.csdn.net ...

  5. iOS:自定义模态动画 --UIPresentationController

    UIPresentationController :展示控制器,是iOS8的一个新特性,用来展示模态窗口的.它是所有模态控制器的管理者. 即: 1> 管理所有Modal出来的控制器 2>  ...

  6. 路由器漏洞复现分析第三弹:DVRF INTRO题目分析

    这个项目的目的是来帮助人们学习X86_64之外其他架构环境,同时还帮助人们探索路由器固件里面的奥秘. 本文通过练习DVRF 中INTRO 部分的题目来学习下MIPS 结构下的各种内存攻击. DVRF: ...

  7. C++ 获取URL图片、html文件,CInternetSession 【转】

    http://blog.csdn.net/gnixuyil/article/details/7688439 获取网络图片 CString URL="http://www.google.com ...

  8. org.apache.hadoop.ipc.RemoteException: User: root is not allowed to impersonate root

    修改 core-site.xml文件 vim /usr/local/hadoop/etc/hadoop/core-site.xml 增加: <property> <name>h ...

  9. 编译安装Nginx和php搭建KodExplorer网盘

    编译安装Nginx和php搭建KodExplorer网盘 环境说明: 系统版本    CentOS 6.9 x86_64         软件版本    nginx-1.12.2        php ...

  10. ReadWriteLock 读写锁(读书笔记)

     读写分离锁可以有效的帮助减少锁的竞争,提升系统的效率, 读-读不互斥 读读之间不阻塞 读-写互斥 读阻塞写,写也会阻塞读 写-写互斥 写写阻塞 在系统中,读操作次数远远大于写操作,则读写锁就可以发挥 ...