6

我正在使用非常酷的ng-map库进行 angular,我想知道如何访问 ng-map标记指令引用的底层标记对象

所以,我有这个标记:

<div id="map-search" data-tap-disabled="true">
  <map zoom="15" disable-default-u-i="true">
    <marker ng-repeat=" pos in positions" position="{{pos.latitude}}, {{pos.longitude}}" id="{{pos.index}}" on-click="pinClicked()">
    </marker>
  </map>
</div>

在这种情况下,我还没有找到在点击事件期间访问 Google Maps Marker Object的直接方法;从控制器:

  app.controller('MapSearchController', function($scope) {

      $scope.$on('mapInitialized', function(event, map) {
        $scope.map = map;
        //Assume existence of an Array of markers
        $scope.positions = generatePinPositionsArray();
      });

      $scope.pinClicked = function(event, marker) {
        console.log('clicked pin!');
        //HOW CAN I GET THE MARKER OBJECT (The one that was clicked) HERE?
        console.log('the marker ->', marker); //prints undefined
      };
  });

提前致谢,

4

2 回答 2

5

this是访问市场对象的答案。它与谷歌地图 api 完全一样,没有什么不同。再次使用this里面的点击功能。

- - - 编辑 - - -

testapp 目录中有很多示例,当您发现 ng-map 的用法时,这些示例很有用。

$scope.foo = function(event, arg1, arg2) {
  alert('this is at '+ this.getPosition());
  alert(arg1+arg2);
}

例子:

https://rawgit.com/allenhwkim/angularjs-google-maps/master/testapp/events.html

于 2015-10-31T01:29:51.093 回答
2

您需要创建一个标记数组!这是(在我看来)唯一的方法。看这里

更新:像这样的plunkr对你有用吗?

这个想法是在事件上传递标记on-click="pinClicked(this)"。然后您可以稍后在控制器上捕获它:$scope.pinClicked = function(events, marker) {...}

于 2015-10-30T23:06:27.747 回答