Javascript 在ngMap中使用事件侦听器

Javascript 在ngMap中使用事件侦听器,javascript,google-maps,google-maps-api-3,ng-map,Javascript,Google Maps,Google Maps Api 3,Ng Map,我正在一个项目中使用Allenhwkim的精彩ngMap。我知道我需要使用Maps Javascript v3 API来操作映射,这很顺利,只是我无法获得任何事件侦听器,例如,$google.Maps.event.addListener(标记[I],'click',function()…)来工作 具体来说,我正在尝试在标记上创建onClick事件。 下面是一个例子: 在这里,我尝试在marker指令上使用ng click属性,但仍然一无所获。您可以使用ngMap的特定UI事件方法 查看以下文档:

我正在一个项目中使用Allenhwkim的精彩ngMap。我知道我需要使用Maps Javascript v3 API来操作映射,这很顺利,只是我无法获得任何事件侦听器,例如,
$google.Maps.event.addListener(标记[I],'click',function()…
)来工作

具体来说,我正在尝试在标记上创建onClick事件。 下面是一个例子:


在这里,我尝试在marker指令上使用ng click属性,但仍然一无所获。

您可以使用ngMap的特定UI事件方法

查看以下文档:

还有示例代码:

HTML:

示例代码链接:

编辑:

您可以使用
google.maps.event.addListener
,但需要创建变量来保存标记,并将侦听器添加到标记中

您可以将script.js中的代码更改为以下内容:

var app = angular.module('myApp', ['ngMap']);

  app.controller('mapController', function($scope, $http, $interval) {
    var map;
    $scope.dynMarkers = [];
    $scope.$on('mapInitialized', function(event, evtMap) {
      map = evtMap;
      for (var i=0; i<1000; i++) {
        var latLng = new google.maps.LatLng(markers[i].position[0], markers[i].position[1]);
        var marker = new google.maps.Marker({position:latLng});
        $scope.dynMarkers.push(marker);

        google.maps.event.addListener(marker, 'click', function() {

            alert("this is marker " + i);
        });

      }
      $scope.markerClusterer = new MarkerClusterer(map, $scope.dynMarkers, {});
    });
  });
var-app=angular.module('myApp',['ngMap']);
app.controller('mapController',函数($scope,$http,$interval){
var映射;
$scope.dynMarkers=[];
$scope.$on('mapInitialized',函数(事件,evtMap){
map=evtMap;

对于(var i=0;你是说我不能在不使用marker指令的情况下附加click事件吗?@Jay我在编辑回答中没有使用marker指令……请查看我的预览链接:感谢你的编辑和你的第二次点击,我终于明白我做错了什么!非常感谢,ztan!!对于其他面临此问题的人,新版本的ng map需要一个小的change获取实例映射。$scope.map已被弃用。请使用NgMap.getMap().then(函数(映射){…})获取映射实例。否决此问题的人能否解释他们为什么这样做?除非你解释此问题的糟糕之处,否则我无法学习如何提出更好的问题。谢谢。
 $scope.click = function(event) {
      map.setZoom(8);
      map.setCenter(marker.getPosition());
    }
var app = angular.module('myApp', ['ngMap']);

  app.controller('mapController', function($scope, $http, $interval) {
    var map;
    $scope.dynMarkers = [];
    $scope.$on('mapInitialized', function(event, evtMap) {
      map = evtMap;
      for (var i=0; i<1000; i++) {
        var latLng = new google.maps.LatLng(markers[i].position[0], markers[i].position[1]);
        var marker = new google.maps.Marker({position:latLng});
        $scope.dynMarkers.push(marker);

        google.maps.event.addListener(marker, 'click', function() {

            alert("this is marker " + i);
        });

      }
      $scope.markerClusterer = new MarkerClusterer(map, $scope.dynMarkers, {});
    });
  });