Jquery有条件地设置谷歌地图变量

时间:2013-06-10 14:35:49

标签: javascript jquery html google-maps google-maps-api-3

我的剧本很难受。基本上我从输入框中读取country_code,然后使用它作为谷歌地图的国家过滤器放置autosuggest。这段代码可以在这里看到:

http://jsfiddle.net/spadez/5dqHg/23/

它从此字段中提取国家/地区代码:

<input class="hidden" id="#ctry" disabled="true" value="us"></input>

我的问题是这个字段并不总是被设置,所以当它不是我有这个:

<input class="hidden" id="#ctry" disabled="true" value=""></input>

但这会打破自动提示,实际上它不应该将国家过滤器应用于自动提示并显示来自每个国家/地区的地点。

我想在sudo代码中我需要这样的东西:

var ctryiso = $("#ctry").val();
autocomplete = new google.maps.places.Autocomplete(input[0], {
  types: ["geocode"],
<if ctryiso !=null then>
  componentRestrictions: {
    country: ctryiso
  }
</if>

});

我也试过这项技术但没有取得任何成功:

if (ctryiso) { options.componentRestrictions= { 'country': ctryiso }; }
var autocomplete = new google.maps.places.Autocomplete(input, options);

任何人都可以帮我弄清楚如果只有国家限制过滤器,如果在上面的国家/地区输入框中找到了一个?

1 个答案:

答案 0 :(得分:1)

您可以使用选项变量并在条件检查后传入。

var ctryiso = $("#ctry").val();
var options;
if(ctryiso != ''){
    options = {
      types: ["geocode"],
      componentRestrictions: {
                 country: ctryiso
      }
    }
}else{
    options = {types: ["geocode"]}
}
autocomplete = new google.maps.places.Autocomplete(input[0], options); // <-- pass in the options

FIDDLE

你可以将它压缩到这个..

var ctryiso = $("#ctry").val();
var options = {
     types: ["geocode"]
};
if(ctryiso != ''){
    options.componentRestrictions= { 'country': ctryiso };        
}
autocomplete = new google.maps.places.Autocomplete(input[0], options); 

FIDDLE