3

这个问题是关于angularjs-google-mapshttps://github.com/allenhwkim/angularjs-google-maps

有没有办法在标记上使用 ng-click 来设置这样的变量?(值 1 是硬编码的,用于测试目的)。单击标记当前似乎不会触发 ng-click。

<marker ng-repeat="instance in common.instances" 
 position="[{{instance.lat}},{{instance.lng}}]" 
 ng-click="common.selectedinstance = 1">
</marker>
4

2 回答 2

5

从他们的文档https://developers.google.com/maps/documentation/javascript/events

用户事件(例如“点击”鼠标事件)从 DOM 传播到 Google Maps API。这些事件与标准 DOM 事件是分开不同的。

据我了解,只有谷歌地图事件可以应用于谷歌地图对象,包括标记、形状等。

那是个坏消息。

好消息是您仍然可以使用on-click事件来操作$scope变量和事件。只要您为此事件使用函数,就没有太大区别。

我会继续调查是否有解决方法,以便我们可以使用 AngularJS 事件进入(即 ngMouseenger、ngMouseleave.ngMouseup、ngClick 等

plunkr 上有一个使用 on-click 的工作示例来满足您的要求。

http://plnkr.co/edit/6qvS0vUYkqVHZ3t6qmn2?p=preview

这是脚本部分

  $scope.myVar = 1;
  $scope.changeMyVar = function(event) {
    $scope.myVar+=1;
    $scope.$apply();
  }

这是html部分

  <map zoom="11" center="[40.74, -74.18]">
    <marker ng-repeat="p in positions" 
      position="{{p}}" title="{{p.toString()}}"
      on-click="changeMyVar()">
    </marker>
  </map>
  myVar : {{myVar}}  Click a marker to increase myVar

要了解有关 angularjs-google-maps 事件的更多信息,请查看有关事件的示例

于 2014-06-29T18:56:32.163 回答
1

我使用下面的代码来获取点击标记的纬度和经度。

html:

   <ng-map zoom="12" center="{{vm.geoCenterLoc}}" style="height:500px">
            <marker ng-repeat="p in vm.positions"
                    position="{{p.pos}}"
                    data="{{data[$index]}}"
                    on-click="myFunc($event)";
                    title="pos: {{p.pos}}"></marker>
   </ng-map>

Javascript(在我的控制器上):

 $scope.myFunc = function (evt) {

            markerPosObj = {
                pos: [this.getPosition().lat(), this.getPosition().lng()]
            };
            markerPos = [];
            markerPos.push(markerPosObj);
            console.log('this marker', markerPos);
        }
于 2016-03-11T21:19:29.490 回答