【发布时间】:2015-12-14 03:21:53
【问题描述】:
我试图在页面加载时将取自用户位置的纬度/经度数据放入 Google Maps API,但我卡住了。
遇到注入错误。我对 Angular 还是很陌生,仍然不完全了解范围的工作原理,所以要温柔。
我的主文件 app.js 位于顶级目录中:
var app = angular.module('ForecastApp', []);
在控制器目录中,我有一个从下面调用 getZip 函数的主控制器:
app.controller('ForecastController', ['$scope', 'forecast', function($scope, forecast) {
$scope.getZip = function(){
forecast.getZip($scope.zipFinder).then(function(response){
$scope.response = response.data;
});
}
}]);
我有一个单独的顶级文件 getLocation.js,它从导航器中获取经纬度数据:
function getLocation(position) {
navigator.geolocation.getCurrentPosition(getLocation);
var lat = position.coords.latitude;
var lng = position.coords.longitude;
var $latlng = lat + "," + lng; // will the variable carry over to the factory?
}
最后是一个工厂文件,我正在尝试将 lat lng 数据包含到来自 API 的 http.get 请求中。我如何在这里获得 latlng 变量?我有一种感觉,这一切都搞砸了。也许我不需要工厂?
app.factory('forecast', ['$http', function($http) {
function getZip(zipFinder) {
$http.get('https://maps.googleapis.com/maps/api/geocode/json?latlng=' + $latlng + '&key=XXXXXXXXXX')
.success(function(data){
return data;
})
}
}]);
html:
<body onload="getLocation()" ng-app="ForecastApp">
<div ng-controller="ForecastController">
<div class="zipFinder" ng-model="zipFinder">
<h3>Your zip code is {{ zipFinder.result_type | postal_code }}</h3>
</div>
</div>
</body
我正在考虑将任何 getLocation.js 和工厂结合起来以将 latlng 变量纳入范围,但它没有这样做。一定有办法把这两者结合起来。
提前致谢。
【问题讨论】:
标签: javascript angularjs google-maps google-api