3

NG单击这个问题是关于angularjs-google-mapshttps://github.com/allenhwkim/angularjs-google-maps(angularjs - 谷歌 - 地图)内的标记

是否有使用上的一个标记NG单击设置这样一个变量的方法吗? (为了测试目的,1的值是硬编码的)。目前单击标记似乎不会触发ng-click。

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

回答

5

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

用户事件(如 “点击” 鼠标事件)是从DOM 传播到谷歌地图API。这些事件分别为单独不同从 标准DOM事件。

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

这是一个坏消息。

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

我会继续调查是否有变通,这样我们就可以使用上,点击使用AngularJS事件成(即ngMouseenger,ngMouseleave。ngMouseup,ngClick等

的工作的例子是在plunkr满足您的要求。

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

这是脚本的一部分

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

这是HTML p艺术

<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 - 谷歌 - 地图活动,请看看the example about event

+0

谢谢,完美的作品 – jakubjanousek

+0

最后一个环节断了。 –

+0

@AntoineCloutier,感谢您的报告。我做了一个修复。 – allenhwkim

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); 
     }