AngularJS – Google Place自动填充API密钥
我是使用Google API的新手,并一直试图找出如何使用Angular实现Places Autocomplete API。 我从来没有真正使用自动完成function。 我目前没有将jQuery库引入我的项目,但我相信我已经看到一些开发人员在使用element.autocomplete
的指令中使用它。
我确实找到了可能有用的任何现有指令,我发现: https : //github.com/kuhnza/angular-google-places-autocomplete
根据文档设置后,我无法让它工作,我也没有看到我在哪里设置API密钥以使其首先运行。 我认为主要错误与API密钥有关,但我并不积极。
根据我的理解,Google的文档提到在拉取场所库时将API密钥作为key
参数包含在内。 如果我在指令的文档中省略了键,我会得到MissingKeyMapError
。 如果我像Google所说的那样添加密钥,我会得到ApiNotActivatedMapError
。 与此同时,Google还说我的API密钥是服务器API密钥,并且“此密钥应该在您的服务器上保密”。
拉入我引用的库的行是:
使用我的PHP后端或仅在浏览器中执行cURL请求可以为我提供结果。 所以现在我只想了解Autocomplete如何工作以及如何使用AngularJS。
所以,是的,我对这个话题感到有些困惑。 如果有人能指出我正确的方向或指出我可能会误解,那将是一个很大的帮助!
您可以为特定域创建Google API key
,这样您就可以确保其他人无法在其网页上使用该key
等。
我也使用这个api来表达Google place指令,我们需要API密钥才能获得API SDK。
这是指令代码。
angular.module('app') .directive('googlePlace', directiveFunction); directiveFunction.$inject = ['$rootScope']; function directiveFunction($rootScope) { return { require: 'ngModel', scope: { ngModel: '=', details: '=?' }, 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() { scope.$apply(function() { scope.details = scope.gPlace.getPlace(); model.$setViewValue(element.val()); $rootScope.$broadcast('place_changed', scope.details); }); }); } }; }
你可以像使用它一样
然后在控制器中捕获place_changed
事件。
$scope.$on('place_changed', function (e, place) { // do something with place });
你可以在脚本中传递你的api密钥作为参数
之后,如果您看到此错误ApiNotActivatedMapError
则表示您需要在google dev控制台中激活服务google地点
https://console.developers.google.com
在API谷歌地图下点击更多,您应该看到Google Places API Web Service
点击它并激活。
希望这可以帮助