JS很新。使用angular我有一个控制器,我想在其中调用maxmind js库来获取用户IP的lng / lat并简单地将其弹出到mapbox的map.setView中。唯一的问题是mapbox当然不会等待回调完成并设置地图,而我仍在进行回调。快速搜索显示我需要做一个.then或延迟的回复,并让映射设置等待回调完成。尝试了这两个后,我仍然无法让它工作。有什么建议?!谢谢!
var onSuccess = function(response){
$scope.lat = response.location.latitude;
$scope.lng = response.location.longitude;
console.log($scope.lat, $scope.lng);
};
var onError = function(error){
console.log(error);
};
geoip2.city(onSuccess, onError);
L.mapbox.accessToken = 'token';
$scope.map = L.mapbox.map('map', 'mapbox.streets',
.setView([$scope.lat, $scope.lng], 12)
.addControl(L.mapbox.geocoderControl('mapbox.places', {
keepOpen: true
}));
以下是我正在使用的示例
//in my case do the maxmind callback and set vars lat/lng via the res.
var promise = $http.get('/api/v1/movies/avengers');
//in my case setup the map and pass in lat/lng from the callback
promise.then(
function(payload) {
$scope.movieContent = payload.data;
});
这似乎可以在$ http中以有角度的方式工作,但不适用于我没有使用$ http的特定回调。当我尝试设置它时,我没有定义承诺。