0

Я использую ui-gmap-google-карту AngularJs directive и ui-gmap-marker для маркера с ng-repeat и событие click, вызывающее функцию в контроллере. Все, кажется, работает. Карта загружается с маркером и нажатием маркера для всех маркеров в первый раз, когда я нажимаю на каждый из маркеров. Но со второй попытки на любом маркере щелкнуть не вызывает событие click.событие маркера не запускается во второй раз на картах google

Вот фрагменты код

<ui-gmap-google-map center="map.center" zoom="map.zoom"> 
    <!--<ui-gmap-markers models="map.markers" fit="true" coords="'self'" icon="'icon'" idkey="map.marker.id" click="selectMarker()">--> 
    <ui-gmap-markers models="map.markers" fit="true" coords="'self'" icon="'icon'" idkey='m.id'> 
     <ui-gmap-marker ng-repeat="m in map.markers" coords="m" icon="m.icon" ng-click='onMarkerClicked(m.sequenceId)' idkey='m.id'> 

     </ui-gmap-marker> 
    </ui-gmap-markers> 
</ui-gmap-google-map> 

..... такой же результата для 'нажмите' и 'нг-нажмите кнопку' событие ..

$scope.generateMarkers = function (referencePoints) { 
      $scope.map.markers.length = 0; 
      //var bounds = new google.maps.LatLngBounds(); 
      for (i = 0; i < referencePoints.length; i++) { 
       var record = referencePoints[i]; 
       var marker = { 
        latitude: record.Lat, 
        longitude: record.Long, 
        title: record.RoadName, 
        id: record.ID, 
        icon: { url: '/content/images/roundcyan.png' },//pin_url(record.ID)// 
        sequenceId:i 
       }; 
       //var position = new google.maps.LatLng(record.Lat,record.Long); 
       //bounds.extend(position); 
       $scope.map.markers.push(marker); 
      } 
      //$scope.map.fitBounds(bounds); 

     }; 

.... ..

$scope.onMarkerClicked = function (sequenceId) { 
    if ($scope.selectedSequenceId >=0) { 
     $scope.map.markers[$scope.selectedSequenceId].icon = { url: 'http://localhost:xxxxx/content/images/roundcyan.png' }; 
    } 
    $scope.selectedSequenceId = sequenceId; 
    $scope.map.markers[sequenceId].icon = { url: 'http://localhost:xxxxx/content/images/roundcyanplus.png' }; 
    $scope.$apply(); 
}; 
+0

Используемые версии: Версия: AngularJS v1.2.8, angular-google-maps 2.1.0 – Hasteq

+0

Что-то не так с вашей 'sequenceId' Я догадываюсь. Посмотрите, решает ли его 'sequenceId: i ++' в 'ng-click'. – KayAnn

ответ

0

вы, возможно, придется отменить распространение события

ng-click="onMarkerClicked(); $event.stopPropagation()" 
+0

либо перед функцией, либо после того, как я привел в примере –