我正在使用angularjs版本1.13.X.在我的应用程序中有一个谷歌放置自动完成搜索框作为指令。当加载页面后,控制台显示错误,但搜索框工作正常。
InvalidValueError: setComponentRestrictions: in property country: not a string; and not an Array
我的指令代码
routerApp.directive('googleplace', ['$state', function ($state) {
return {
require: 'ngModel',
link: function (scope, element, attrs, model) {
var options = {
types: [],
componentRestrictions: {}
};
scope.gPlace = new google.maps.places.Autocomplete(element[0], options);
google.maps.event.addListener(scope.gPlace, 'place_changed', function (e) {
scope.$apply(function () {
model.$setViewValue(element.val());
var countrycode = "na";
var latitude = 0;
var longitude = 0;
scope.secondplacebox = scope.chosenPlace;
for (var i = 0; i < scope.gPlace.getPlace().address_components.length; i++) {
if (scope.gPlace.getPlace().address_components[i].types[0] == 'country') {
countrycode = scope.gPlace.getPlace().address_components[i].short_name;
}
}
latitude = scope.gPlace.getPlace().geometry.location.lat().toFixed(6);
longitude = scope.gPlace.getPlace().geometry.location.lng().toFixed(6);
//$state.go('home');
scope.Fn_setCookieData(latitude, longitude, countrycode);
});
});
}
};
}
]);
如何解决这个问题?请帮助我,并提前致谢
答案 0 :(得分:11)
我看到options
有componentRestrictions
,并且不限于特定的国家/地区。像componentRestrictions: {country: 'fr'}
这样的国家限制可以解决问题。将fr
替换为您所在国家/地区的要求。如果您不需要对国家/地区的限制,只需避免在选项中使用它。
希望这能帮到你!
答案 1 :(得分:2)
我有同样的问题,但我已经改为版本3并且它已经有效了。
Before http://maps.googleapis.com/maps/api/js?key=[MyKey]&libraries=places&language=en
After http://maps.googleapis.com/maps/api/js?key=[MyKey]&libraries=places&language=en&v=3