如何使用地理位置而不是完整的国家和地区名称来获取国家和地区代码
How can I get the country and region code using geolocation instead of full country and region names
我正在构建一个网站,该网站使用HTML5中的地理位置来提供特定于用户所在地区的服务。以下是我一直在做的事情:我在这个SO问题中使用Javascript来获取国家和行政区的名称。然后我在数据库中搜索国家和地区名称,它会返回我可以显示的特定于位置的数据。
这是脚本:
<script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script>
var region = "";
var country = "";
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition,noGeolocation);
} else {
...
}
}
function showPosition(position)
{
var geocoder = new google.maps.Geocoder();
var latlong = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
geocoder.geocode({'latLng': latlong}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
for (var i = 0; i < results[0].address_components.length; i++)
{
var longname = results[0].address_components[i].long_name;
var type = results[0].address_components[i].types;
if (type.indexOf("administrative_area_level_1") != -1)
{
region = longname;
}
if (type.indexOf("country") != -1)
{
country = longname;
}
}
}
});
}
function noGeolocation()
{
...
}
getLocation();
</script>
这个脚本运行良好。我对它没有任何问题,直到我使用了不同语言的操作系统和浏览器。然后脚本返回该语言的国家和地区名称。当然,我在数据库中找不到任何匹配项。
所以,问题是:有没有办法从谷歌反向地理定位中获得独立于语言的国家和地区代码?或者有没有办法总是用英语表达?那么我使用IP地理定位会更好吗?还是应该使用完全不同的方法?
谢谢你的帮助。
您应该使用国家/地区的short_name
值,这是两位数的国家/地区代码。这些是ISO标准代码,应该是数据库查找的基础,而不是本地化的国家/地区名称。
另一个选项是MaxMind的GeoIP2 JavaScript API:,它具有管理区域的ISO代码
http://dev.maxmind.com/geoip/geoip2/javascript/
它在可用时使用W3C地理位置,而在其他情况下则依赖MaxMind的IP地理位置数据库。免费版本需要在您的网站上的某个位置进行归因。
相关文章:
- Possibile使用Manifest v2下的HTML5地理位置API将lat/long转换为国家/地区
- 无法使用国家/地区选择中的状态动态填充下拉列表
- 使用自动完成服务()将 Google 地图地点限制为特定国家/地区
- Magento:根据所选国家/地区隐藏/显示输入字段
- 仅在引导程序表单助手国家/地区选取器中显示国家/地区子集文本
- 如何从特定国家/地区重定向用户
- 根据国家/地区更改货币
- 如何将 gmap 搜索自动完成功能限制为有限的国家/地区
- 带有标志和文本的国家/地区建议列表
- 选择国家/地区时更改颜色
- 相对于选定的地区中心缩放SVG国家/地区地图
- Three.js地球仪-使国家/地区可点击
- 我们如何使用 jQuery 通过 IP 地址获取国家/地区名称
- 使用 jVectormap World Map 获取国家/地区名称
- 将标记从国家名称放入国家/地区
- 无法使用 asp.net 获取服务器端的javascript返回的国家/地区名称
- 是否可以获取我们在系统时区中选择的国家/地区名称.我们可以得到偏移量(如 5.5)但是如何获取国家名称
- 如何通过提供 IP 地址在数据网格中获取国家/地区名称
- 如何使用地理位置而不是完整的国家和地区名称来获取国家和地区代码
- Bootstrap表单帮助程序未选择完整的国家/地区名称