2015-01-09 2 views
0

Я использую Ионные Framework b14, и последнюю ngmap,Не может центрировать карту Google с ионной структурой и ngMap

У меня есть мнение, что показывает карту, но когда я хочу, чтобы установить центр он не покажите координаты, которые я получаю от службы.

(function() { 

    var injectParams = ['$scope', '$stateParams', 'storeFactory']; 
    var StoreController = function($scope, $stateParams, storeFactory) { 
    var id = $stateParams.storeId; 
    $scope.store; 


    storeFactory.getStore(id) 
     .success(function(store) { 
     $scope.store = store; 
     }).error(function(error) { 
     $scope.status = ' ' + error.message; 
     }); 


    $scope.$on('mapInitialized', function(event, map) { 
     var myLatLng = new google.maps.LatLng(store.Latitude, store.Longitud); 
     map.setCenter(myLatLng); 

    }); 

    }; 

    StoreController.$inject = injectParams; 

    angular.module('elizondo').controller('StoreController', StoreController); 

}()); 

я полагаю, должно быть что-то со временем он принимает сервер, чтобы ответить, но я понятия не имею, как это исправить, любую помощь вы можете дать мне.

спасибо.

ответ

4

Вы правы, функция прослушивания mapInitialized выполнит перед обратным вызовом успеха от getStore.

Вы можете сохранить карту от функции слушателя в переменной и использовать это в вашей функции обратного вызова:

var map; 

$scope.$on('mapInitialized', function(event, m) { 
    map = m; 
}); 

storeFactory.getStore(id).success(function(store) { 

    $scope.store = store; 

    var myLatLng = new google.maps.LatLng(store.Latitude, store.Longitud); 
    map.setCenter(myLatLng); 
}); 

Если map директива сфера является такой же, как StoreController сферу, например:

<div ng-controller="StoreController"> 
    <map zoom="8"></map> 
</div> 

Затем объект map уже будет доступен на контроллере $scope, поэтому вы можете пропустить функцию прослушивания mapInitialized (если вы не используете ее для чего-то еще и):

storeFactory.getStore(id).success(function(store) { 

    $scope.store = store; 

    var myLatLng = new google.maps.LatLng(store.Latitude, store.Longitud); 
    $scope.map.setCenter(myLatLng); 
}); 
+0

Спасибо, сработало – albertolo

+0

Добро пожаловать :) – tasseKATT

Смежные вопросы