【问题标题】:google maps Geocoder Returns response for canada in french, while I need the response in english谷歌地图地理编码器以法语返回加拿大的响应,而我需要英语的响应
【发布时间】:2019-10-30 17:25:03
【问题描述】:

我的项目有一个州/加拿大省的下拉列表,我选择那些 基于邮政编码的州通过 google.geocoder 找出城市或州

虽然我在加拿大使用 geocoder.geocode 以 french 响应,而我需要 english 响应。

 var geocoder = new google.maps.Geocoder();
        geocoder.geocode({ 'address': "G1B0A3, Canada" }, 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 types = results[0].address_components[ii].types.join(",");
                        if (types.includes("locality")) {
                            $("#City").val(results[0].address_components[ii].long_name);
                            city = results[0].address_components[ii].long_name;
                        }
                        if (types == "administrative_area_level_1,political") {
                            $(".StateClass option").each(function () {
                                if ($(this).text().toUpperCase() == results[0].address_components[ii].long_name.toUpperCase()) {
                                    if (typeof (state) != "undefined") {
                                        state = $(this).val();
                                        $(".StateClass").val($(this).val());
                                    }
                                    else {
                                        $(this).attr('selected', true);
                                        state = $(this).val();
                                        $(".StateClass").val(state);
                                    }
                                }
                            });
               }
           }
        }
    }
}

【问题讨论】:

    标签: javascript google-maps google-geocoder


    【解决方案1】:

    Geocoding API docs 中非常清楚地说明了这种行为:

    language — 返回结果的语言。

    • 请参阅list of supported languages。 Google 经常更新支持的语言,因此此列表可能并不详尽。
    • 如果未提供language,则地理编码器会尝试使用Accept-Language 标头中指定的首选语言,或者 发送请求的域的母语。
      [...]

    因此,将language 选项添加到您对geocoder.geocode 的初始调用中,指定英语 (en) 作为“返回结果的语言”:

    geocoder.geocode({ 'address': "G1B0A3, Canada", 'language': 'en' }, function (results, status) {
    

    【讨论】:

    • 我得到了响应 "long_name" : "Québec",之前我通过了语言 en,但我得到了相同的响应,要么通过 en,要么不通过语言
    • 我通过支持的语言经历了同样的事情,但我没有得到回应
    【解决方案2】:

    经过大量搜索后,我没有得到解决方案来获得谷歌的英文回复,比如“G1B0A3”这样的几个邮政编码,我使用的是短名称,是英文而不是这个长名称,有些情况下会根据本地化语言进行转换

    对于短名称:结果[0].address_components[ii].short_name

    【讨论】:

      猜你喜欢
      • 2014-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多