2013-09-30 70 views
0

我做了一個指令,加載了谷歌地圖API在我的網站:http://plnkr.co/edit/3009kInkBmiF9ksB3eg9?p=catalogue實例化地圖

我的問題是:怎麼會是實例地圖上再加入一些點擊的最好方式聽衆在不同的意見?

我使用ngView指令加載次視點:

'use strict'; 

var climbingApp = angular.module('climbingApp', ['ngRoute', 'maps'], 
    function($routeProvider){ 

     $routeProvider.when('/', { 
      controller: 'Main' 
     }); 

     $routeProvider.when ('/newSector', { 
      templateUrl: 'app/templates/newSector.html', 
      controller: 'addSector' 
     }); 
    } 
); 

而且newSector控制器我用一個服務來添加監聽器內:

climbingApp.factory('Markers', function($rootScope){ 
    return { 
     addListener: function(mapInstance, callback) { 
      google.maps.event.addListener(
       mapInstance, 
       'click', 
       function(e) { 
        var marker = new google.maps.Marker({ 
         position: e.latLng, 
         map: mapInstance 
        }); 
        $rootScope.$apply(function(){ callback(e); }); 
       } 
      ); 
     } 
    } 
}); 

但這樣做的方式我無法從主控制器中刪除偵聽器,因爲我無法引用映射實例。任何線索我應該怎麼做?

回答

0

我是ng-map, google maps angularjs directive的創建者,稱爲ng-map。這不需要任何JavaScript編碼的簡單功能。

對於您的情況,使用該指令,您可以將'on-click'屬性添加到map標記。

<map zoom="11" center="[40.74, -74.18]" on-click="myfunc()"> 
</map>` 

更多的細節可以在ng-map找到。