 <p>The question is a bit old, but maybe this can be useful for someone with the same issue.</p> <p>Here is a simple example from the code I used:</p> <p>On my controller, I generate a markers array with this structure:</p> <pre><code> var markers = new Array(); for(var i = 0; i &lt; someData.length; i++ ){ var newMarker = { id: parseInt(i), latitude: parseFloat(someData[i].latitude), longitude: parseFloat(someData[i].longitude), showWindow: false, title: "Marker"+i, } newMarker.onClicked = function () { alert(newMarker.id); } markers.push(newMarker); } $scope.markers = markers; </code></pre> <p>Then on the view:</p> <pre><code>&lt;google-map center="map.center" draggable="true" options=map.options zoom="map.zoom"&gt; &lt;markers models="markers" coords="'self'" doCluster=true click="'onClicked'"&gt; &lt;/markers&gt; &lt;/google-map&gt; </code></pre>