2

我正在尝试设置一个 cookie,然后读取它并将其放入我的谷歌地理编码脚本中,但它似乎不起作用。应该是唯一的自动建议结果来自美国,但您可以在示例中看到它们是来自每个国家/地区的建议。

这是我正在使用的代码:

http://jsfiddle.net/sR4GR/4/

这是原始代码:

<script type="text/javascript" src="//maps.google.com/maps/api/js?sensor=true&libraries=places"></script>
<script type="text/javascript" src="https://raw.github.com/carhartl/jquery-cookie/master/jquery.cookie.js"></script>

<script type="text/javascript">

    // SET COOKIE FOR TESTING   
$.cookie("country", "us");

    // GEOCODE RESULT
 function geocode(){
    var GeoCoded = { done: false };
    var input = document.getElementById('loc');
    var options = { types: []};
    var country_code = $.cookie('country');
    if (country_code) { options.componentRestrictions= { 'country': country_code }; }
    var autocomplete = new google.maps.places.Autocomplete(input, options);
    $('#searchform').on('submit',function(e){
       if(GeoCoded.done)
            return true;
        e.preventDefault();
        var geocoder = new google.maps.Geocoder();
        var address = document.getElementById('loc').value;

        $('#searchform input[type="submit"]').attr('disabled',true);

        geocoder.geocode({
            'address': address
        },
        function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                $('#lat').val(results[0].geometry.location.lat());
                $('#lng').val(results[0].geometry.location.lng());
                GeoCoded.done = true;
                $('#searchform').submit();
            } else {
                $('#searchform input[type="submit"]').attr('disabled',false);
                alert("Damn! We couldn't find this location")
            }

        });

    });

};      
</script>

<body onload="geocode()">
<form name="searchform">
        <input class="kw" id="keyword" placeholder="Keyword"></input>
        <input id="loc" placeholder="Location" type="text"></input>
        <input type="submit" value="Search" id="search">
        <input class="hidden" id="lat" disabled="true" placeholder="lat"></input>
        <input class="hidden" id="lng" disabled="true" placeholder="lng"></input>
</form>
4

1 回答 1

1

上面的代码是正确编写和执行的。cookie 在 Chrome 和 Firefox 中设置。在 Safari 中,默认的 cookie 设置是“来自访问者”,这是一个相对严格的设置。要允许设置这些 cookie,用户必须更改 Safari 设置以“始终”允许 cookie。

虽然似乎没有一个经典的解决方法,但一种可能的解决方案是检查 cookie 是否返回undefined,如果返回,则提醒用户“请转到设置并打开 cookie,以便我的真棒网站可以有效地运行“你的安全意识设备。嗯?谢谢。”

此线程包含有关 Safari 和 cookie 的更多信息

于 2013-05-14T12:11:48.547 回答