14

मैं अपने कॉर्डोबा मोबाइल आवेदन में कोणीय-google-नक्शे को एकीकृत नहीं है। मैं निम्नलिखित फ़ंक्शन का उपयोग करके मानचित्र रीफ्रेश करना चाहता हूं।

 function refreshMap() { 
      $scope.map.control.refresh({ 
       latitude: $scope.location.T_Lat_Deg_W.value, 
       longitude: $scope.location.T_Long_Deg_W.value 
      }) 
     } 

लेकिन त्रुटि apprears

angular.js:13540 TypeError: $scope.map.control.refresh is not a function

at Scope.refreshMap (mapController.js:122) 
at fn (eval at <anonymous> (angular.js:1), <anonymous>:4:224) 
at expensiveCheckFn (angular.js:15475) 
at callback (angular.js:25008) 
at Scope.$eval (angular.js:17219) 
at Scope.$apply (angular.js:17319) 
at HTMLAnchorElement.<anonymous> (angular.js:25013) 
at defaultHandlerWrapper (angular.js:3456) 
at HTMLAnchorElement.eventHandler (angular.js:3444) 

यहाँ इस समस्या के लिए JSFiddle example है।

वहाँ इस समस्या को हल करने के लिए एक तरीका है? धन्यवाद !

+3

क्या आप कुछ और कोड दिखा सकते हैं? आपका पूरा नियंत्रक और आपका नक्शा टैग? – kabaehr

+0

मुझे एक ही समस्या का सामना करना पड़ रहा है क्योंकि मैंने कोणीय 1.5 और कोणीय-google-maps 2.3.2 में अपग्रेड किया है ... – troig

+0

यह वास्तव में अजीब है। कभी-कभी यह काम करता है, कभी-कभी यह त्रुटियों की रिपोर्ट करता है –

उत्तर

6

वास्तव में इस समस्या की कुंजी है कि $scope.map.control.refresh से पहले नक्शा पूरी तरह से भरी हुई है नहीं किया जाना चाहिए है। नक्शा शुरू में छिपाने रहा है, तो मैं इस

function refreshMap() { 
    //show map action 
    $scope.map.showMap = true; 
    //refresh map action 
    $scope.map.control.refresh({latitude: 48,longitude: 2.3}); 
} 

refreshMap समारोह की तरह एक समारोह फोन मानचित्र कार्रवाई फोन और एक ही समय में नक्शा कार्रवाई ताज़ा होगी। इसका मतलब यह है कि जब मैं $ scope.map.control.refresh फ़ंक्शन कॉल करता हूं तो नक्शा पूरी तरह से लोड नहीं होता है। इस प्रकार, यह TypeError: $scope.map.control.refresh is not a function की रिपोर्ट करेगा।

एक विधि uiGmapIsReady उपयोग करने के लिए पता लगाने के लिए कि क्या नक्शे उपयोग के लिए तैयार है।

function refreshMap() { 
    //show map action 
    $scope.map.showMap = true; 

    //refresh map action 
    uiGmapIsReady.promise() 
     .then(function (map_instances) { 
      $scope.map.control.refresh({latitude: 48,longitude: 2.3}); 
     }); 
} 

यह JSFiddle उपयोग uiGmapIsReady इस समस्या को हल करने के लिए।

दूसरी विधि $timeout उपयोग करने के लिए ताज़ा कार्रवाई में देरी करने के लिए है।

function refreshMap() { 
    //show map action 
    $scope.map.showMap = true; 

    //delayed refresh map action 
    $timeout(function(){ 
     $scope.map.control.refresh({latitude: 48,longitude: 2.3}); 
    },3000); 
} 

यह JSFiddle$timeout का उपयोग करता है इस समस्या को हल करने के लिए।

संबंधित मुद्दे