如何通过邮政编码确定美国县
How can I determine US County by zip-code?
是否可以在javascript中在客户端实现一个函数来像这样使用它:
var county = get_county(zip_code);
我的意思是可以通过脚本在线完成吗?或者我必须挖掘一些数据库?还是我必须买它?
任何帮助不胜感激!
附言在Dyrandz Famador的帮助下,我为GAS做了这个功能:
function get_county(zip) {
var county, response, result, adresses, i, j, n, type;
response = Maps.newGeocoder().geocode(zip);
for (i = 0; i < response.results.length; i++) {
result = response.results[i];
adresses = result.address_components;
n = adresses.length;
for (j=0;j<n;j++) {
type = adresses[j].types[0];
if (type == 'locality') county = (adresses[j].long_name);
if (type == 'administrative_area_level_2') {county =(adresses[j].long_name);}
}
}
return (county);
}
您可以使用谷歌地图API从邮政编码中获取位置
Google提供了许多API,其中包括Maps API。在此示例中 我们将显示使用邮政编码访问Google所需的所有代码 以城市,州和国家/地区的形式获取位置。
首先要做的是引用 Google 的 Map API:
<script language="javascript" src="https://maps.google.com/maps/api/js?sensor=false"></script>
接下来是用于输入邮政编码的小表格:
<form>
zip: <input type="text" name="zip" value="46032"> <a href="#" onclick="getLocation()">Get Address</a>
</form>
你可以看到我有一个链接,它触发了一个名为“getLocation()”
的函数——下面你会发现该函数和相关代码:
...
<script language="javascript">
function getLocation(){
getAddressInfoByZip(document.forms[0].zip.value);
}
function response(obj){
console.log(obj);
}
function getAddressInfoByZip(zip){
if(zip.length >= 5 && typeof google != 'undefined'){
var addr = {};
var geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': zip }, function(results, status){
if (status == google.maps.GeocoderStatus.OK){
if (results.length >= 1) {
for (var ii = 0; ii < results[0].address_components.length; ii++){
var street_number = route = street = city = state = zipcode = country = formatted_address = '';
var types = results[0].address_components[ii].types.join(",");
if (types == "street_number"){
addr.street_number = results[0].address_components[ii].long_name;
}
if (types == "route" || types == "point_of_interest,establishment"){
addr.route = results[0].address_components[ii].long_name;
}
if (types == "sublocality,political" || types == "locality,political" || types == "neighborhood,political" || types == "administrative_area_level_3,political"){
addr.city = (city == '' || types == "locality,political") ? results[0].address_components[ii].long_name : city;
}
if (types == "administrative_area_level_1,political"){
addr.state = results[0].address_components[ii].short_name;
}
if (types == "postal_code" || types == "postal_code_prefix,postal_code"){
addr.zipcode = results[0].address_components[ii].long_name;
}
if (types == "country,political"){
addr.country = results[0].address_components[ii].long_name;
}
}
addr.success = true;
for (name in addr){
console.log('### google maps api ### ' + name + ': ' + addr[name] );
}
response(addr);
} else {
response({success:false});
}
} else {
response({success:false});
}
});
} else {
response({success:false});
}
}
</script>
...
就是这样 - 在Chrome中打开控制台,并在您输入不同的邮政编码时注意输出。
从这里获取:http://rickluna.com/wp/2012/09/using-the-google-maps-api-to-get-locations-from-zip-codes/
你需要知道zip_code和国家/地区的映射,
我为此找到了一个 github 项目:
https://github.com/jgoodall/us-maps
通过指令获得 JSON 映射后,即可实现所需的函数。
这是美国政府的一个很好的地理数据库API:
https://www.sba.gov/about-sba/sba-performance/sba-data-store/web-service-api/us-city-and-county-web-data-api#county-state
该 API 生成所有县和州信息,但似乎不包含邮政编码。使用谷歌地理编码API可能更容易。
您可以从几乎任何位置输入(例如Santa Monica, CA
或90405
)中获取地址,城市,州和/或邮政编码的一种方法。请记住,除非您的请求非常具体,否则您不能总是返回所有这些变量。
function getLocationInfo(){
var location = $('#location').val();
var geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': location }, function (result, status) {
var address = '';
var streetNumber = '';
var streetName = '';
var cityName = '';
var stateName = '';
var zipCode = '';
var addressComponent = result[0]['address_components'];
// find street number
var streetNumberQueryable = $.grep(addressComponent, function (x) {
return $.inArray('street_number', x.types) != -1;
});
if (streetNumberQueryable.length) {
streetNumber = streetNumberQueryable[0]['long_name'];
}
// find street name
var streetNameQueryable = $.grep(addressComponent, function (x) {
return $.inArray('route', x.types) != -1;
});
if (streetNameQueryable.length) {
streetName = streetNameQueryable[0]['long_name'];
}
// find city data
var cityQueryable = $.grep(addressComponent, function (x) {
return $.inArray('locality', x.types) != -1;
});
if (cityQueryable.length) {
cityName = cityQueryable[0]['long_name'];
}
// find state data
var stateQueryable = $.grep(addressComponent, function (x) {
return $.inArray('administrative_area_level_1', x.types) != -1;
});
if (stateQueryable.length) {
stateName = stateQueryable[0]['long_name'];
}
// find zip data
var zipQueryable = $.grep(addressComponent, function (x) {
return $.inArray('postal_code', x.types) != -1;
});
if (zipQueryable.length) {
zipCode = zipQueryable[0]['long_name'];
}
address = streetNumber + ' ' + streetName;
console.log(address);
console.log(cityName);
console.log(stateName);
console.log(zipCode);
});
}
- 寻找一个免费的交互式美国地图与突出显示的州
- 在谷歌api v3中使用地理自动完成功能获取邮政编码
- HTML文本框,它接受电话号码,并以美国电话号码格式显示
- 我可以用JavaScript判断访问者是否'的语言环境遵循美国风格或世界其他地区's风格
- 根据客户的地理位置、邮政编码和位置切换图像
- 美国地图插件,具有状态数据/悬停功能的新按钮
- jQuery美国地图插件-为每个点击状态添加unique.html
- D3-多年渲染'美国地图上的州数据价值
- 使用地图框 API 将邮政编码转换为纬度和经度
- 如何通过邮政编码确定美国县
- d3初学者,制作美国县地图
- 马真托的美国邮政编码验证
- 美国的邮政编码验证
- 如何使用jQuery验证插件验证美国邮政编码
- 一旦用户在输入字段中输入有效的美国邮政编码值,如何自动填充城市和州输入字段
- 如何使用jQuery验证美国邮政编码,并在Bootstrap模板的文本字段上方显示红色错误消息
- 仅显示单个州和完整美国县地图中的县
- 通过用户输入城市名称检索邮政编码的最佳API(仅限美国)
- 如何使用 jquery 验证美国邮政编码
- 邮政编码(美国邮政编码)验证