使用 Google Geocoding API(或类似的)实现地址查找 [关闭]
Posted
技术标签:
【中文标题】使用 Google Geocoding API(或类似的)实现地址查找 [关闭]【英文标题】:Implementing an address lookup with Google Geocoding API (or similar) [closed] 【发布时间】:2010-12-08 18:23:10 【问题描述】:我想在我的网站上添加一项功能,客户可以在其中输入他们的邮政编码,然后它会自动使用 Google 地理编码或开源/必应等效项查找他们的地址。
有没有人有任何示例代码或知道我可以在哪里执行此操作的好指南?
如果使用 jQuery 更好:)
在此先感谢
达伦
【问题讨论】:
【参考方案1】:使用 jQuery 的 getJSON
和 google 的 API - http://codepen.io/seanjacob/pen/wfcHB
$('#submit').click(function()
//Get Postcode
var number = $('#number').val();
var postcode = $('#postcode').val().toUpperCase();;
//Get latitude & longitude
$.getJSON('https://maps.googleapis.com/maps/api/geocode/json?address=' + postcode + '&key=[[YOUR_API_KEY]]', function(data)
var lat = data.results[0].geometry.location.lat;
var lng = data.results[0].geometry.location.lng;
//Get address
$.getJSON('https://maps.googleapis.com/maps/api/geocode/json?latlng=' + lat + ',' + lng + '&key=[[YOUR_API_KEY]]', function(data)
var address = data.results[0].address_components;
var street = address[1].long_name;
var town = address[2].long_name;
var county = address[3].long_name;
//Insert
$('#text').text(number + ', ' + street + ', ' + town + ', ' + county + ', ' + postcode);
);
);
);
除非您使用的是 Google Maps API for Business,否则您每天最多只能收到 2,500 个地理位置请求。由于此脚本每次运行发出两个请求,因此每天要查找 1,250 个邮政编码。
【讨论】:
已修复,添加了我自己的codepen的链接,我不会删除 顺便说一句,我让你的代码更简单codepen.io/aamirafridi/pen/VeppRo 无需再次调用谷歌 API 您有“每天 2,500 次地理定位请求”声明的链接吗? 不错! developers.google.com/maps/documentation/geocoding/usage-limits @AamirAfridi 不幸的是,您的代码不太准确。示例:35 号,邮编:HU8 8QP【参考方案2】:我现在实际上正在开发一个使用 GeoCoding 的 Google Maps 应用程序......这是我的第一个,所以我一直非常依赖 Google Maps API。以下是帮助您入门的链接:
http://code.google.com/apis/maps/documentation/javascript/basics.html - 一般 API 的基本起点。
在左侧栏中查看教程、地理编码(或在教程中途点击地理编码链接)和代码示例。
所有这些都让我到达了我需要开始的地方。
祝你好运!
莱兰多
【讨论】:
code.google.com/apis/maps/documentation/javascript/… - 教程 code.google.com/apis/maps/documentation/javascript/… - 地理编码页面 code.google.com/apis/maps/documentation/javascript/examples/… - 代码示例【参考方案3】:感谢 seanjacob 的回答让我更深入地研究。 address_components 中返回的结果并不总是相同的类型,即索引 1 并不总是包含街道名称,因此最好检查 address_components[n].types[0] 中返回的值以确定它的地址字段的类型包含。
还请注意,您现在应该使用 https 调用 Google 的 API,并且您需要指定您的 API 密钥。
这是脚本:
function getAddress()
//Get Postcode
var number = $('#HouseNumber').val();
var postcode = $('#PostCode').val().toUpperCase();;
var address_1 = '';
var address_2 = '';
var town = '';
var county = '';
var pcode = '';
var region = '';
var country = '';
//Get Address
$.getJSON('https://maps.googleapis.com/maps/api/geocode/json?address=' + postcode + '&sensor=false&key=[YOUR API KEY IN HERE]', function (data)
// Format/Find Address Fields
var address = data.results[0].address_components;
// Loop through each of the address components to set the correct address field
$.each(address, function ()
var address_type = this.types[0];
switch (address_type)
case 'route':
address_1 = number + ' ' + this.long_name;
break;
case 'locality':
address_2 = this.long_name;
break;
case 'postal_town':
town = this.long_name;
break;
case 'administrative_area_level_2':
county = this.long_name;
break;
case 'administrative_area_level_1':
region = this.long_name;
break;
case 'country':
country = this.long_name;
break;
);
// Sometimes the county is set to the postal town so set to empty if that is the case
if (county === town)
county = '';
// Display the results
$('#address_1').text(address_1);
$('#address_2').text(address_2);
$('#town').text(town);
$('#county').text(county);
$('#postcode').text(postcode);
$('#region').text(region);
$('#country').text(country);
);
这里是调用函数的页面
<div class="form-horizontal">
<div class="form-group">
<div class="col-md-2 control-label"><label for="HouseNumber">House No.</label></div>
<div class="col-md-10">
<input type="text" id="HouseNumber" name="HouseNumber" />
</div>
</div>
<div class="form-group">
<div class="col-md-2 control-label"><label for="PostCode">Post Code</label></div>
<div class="col-md-10">
<input type="text" id="PostCode" name="PostCode" />
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-md-4 acc-centre"> </div>
<div class="col-md-4 acc-centre"><input type="button" class="btn btn-primary btn-lg" value="Lookup" onclick="getAddress()"></div>
<div class="col-md-4 acc-centre"> </div>
</div>
<div class="row">
<div class="col-md-12 acc-centre">
<span id="address_1"></span><br />
<span id="address_2"></span><br />
<span id="town"></span><br />
<span id="county"></span><br />
<span id="postcode"></span><br />
<span id="region"></span><br />
<span id="country"></span><br />
</div>
</div>
</div>
【讨论】:
以上是关于使用 Google Geocoding API(或类似的)实现地址查找 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Google Geocoding API 返回错误的语言作为响应
Google Maps Geocoding API 使用限制
Google Maps Geocoding API - 使用 API 密钥拒绝请求
在哪里放置 Google Geocoding API 的 API 密钥?