javascript - How can I get the country and region code using geolocation instead of full country and region names - Stack Overfl

I'm building a website that uses geolocation in HTML5 to provide a service specific to the region

I'm building a website that uses geolocation in HTML5 to provide a service specific to the region in which the user is. Here is what I have been doing: I use the Javascript in this SO question to get country and administrative region names. Then I search the country and region names in a database and it returns location-specific data that I can display.

Here is the script:

<script src=""></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_ponents.length; i++)
                    {
                        var longname = results[0].address_ponents[i].long_name;
                        var type = results[0].address_ponents[i].types;
                        if (type.indexOf("administrative_area_level_1") != -1)
                        {
                            region = longname;
                        }
                        if (type.indexOf("country") != -1)
                        {
                            country = longname;
                        }
                      }
              }
        });
    }
    function noGeolocation()
    {
        ...
    }

    getLocation();
</script>

This script is working fine. I had no problem with it, until I used an OS and browser set to a different languages. The script then returned the country and region names in that language. Of course, I couldnt find any match in my database.

So, the question(s) is (are): is there a way to get language-independent country and region codes from google reverse geolocation? or is there a way to always get it in english? am I better off using IP geolocation then? or should I use a totally different method?

Thanks for the help.

I'm building a website that uses geolocation in HTML5 to provide a service specific to the region in which the user is. Here is what I have been doing: I use the Javascript in this SO question to get country and administrative region names. Then I search the country and region names in a database and it returns location-specific data that I can display.

Here is the script:

<script src="https://maps.googleapis./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_ponents.length; i++)
                    {
                        var longname = results[0].address_ponents[i].long_name;
                        var type = results[0].address_ponents[i].types;
                        if (type.indexOf("administrative_area_level_1") != -1)
                        {
                            region = longname;
                        }
                        if (type.indexOf("country") != -1)
                        {
                            country = longname;
                        }
                      }
              }
        });
    }
    function noGeolocation()
    {
        ...
    }

    getLocation();
</script>

This script is working fine. I had no problem with it, until I used an OS and browser set to a different languages. The script then returned the country and region names in that language. Of course, I couldnt find any match in my database.

So, the question(s) is (are): is there a way to get language-independent country and region codes from google reverse geolocation? or is there a way to always get it in english? am I better off using IP geolocation then? or should I use a totally different method?

Thanks for the help.

Share Improve this question edited May 23, 2017 at 12:32 CommunityBot 11 silver badge asked Jul 17, 2013 at 15:25 Julien SpronckJulien Spronck 15.5k5 gold badges49 silver badges57 bronze badges 0
Add a ment  | 

2 Answers 2

Reset to default 1

You should use the short_name value for the country, which is the two-digit country code. These are ISO standard codes and should be the basis for your database lookup, not the localized country name.

Another options, which has ISO codes for administrative regions, is MaxMind's GeoIP2 JavaScript API:

http://dev.maxmind./geoip/geoip2/javascript/

It uses W3C geolocation when available and falls back on MaxMind's IP geolocation database otherwise. The free version requires attribution somewhere on your site.

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745257646a4619051.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信