javascriptjquerygoogle-maps-api-3jquery-gmap3

JavaScript click event for any google maps markers?


I need to make something happen when any google maps marker is clicked on. Im using the demo from this link as a starting point:

http://gmap3.net/examples/tags.html

UPDATE - ive tried the following:

$.each(markers, function(i, marker){
  marker.click(function(){  
     alert('alert');
  });
});

$.each(markers, function(i, marker){
  $(marker).click(function(){  
     alert('alert');
  });
});

UPDATE Ive tried adding this middle section to existing code:

        $.each(markers, function(i, marker){
            marker.setMap( checked ? map : null);

           //added code begins
            $(marker).click(function(){ 
                 alert('dfd');
              });
           //added code ends

        });

Solution

  • Note that the OP is asking about doing this using the GMAP3 library, which is a jQuery plugin library that adds an API layer on top of the Google Maps layer. it is absolutely correct to say that the Google API is to use google.maps.addListener, but I think that the OP wants something that's closer to the GMAP3 example using addMarkers, but listening to the click event. With that in mind, I modified the example from GMAP3 and changed the mouseenter event to the click event and got rid of the mouseleave event.

    For those wanting to do further playing, I created a jsFddle of this example.

    Here's the source:

    <!DOCTYPE HTML>
    <html>
    <head>
        <style>
         #map {
          width: 400px;
          height: 400px;
      }
    </style>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">  </script>
    <script type="text/javascript" src="http://gmap3.net/js/gmap3-4.1-min.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $('#map').gmap3({
                action: 'init',
                options: {
                    center: [46.578498, 2.457275],
                    zoom: 5
                }
            }, {
                action: 'addMarkers',
                markers: [
                {
                    lat: 48.8620722,
                    lng: 2.352047,
                    data: 'Paris !'},
                    {
                        lat: 46.59433,
                        lng: 0.342236,
                        data: 'Poitiers : great city !'},
                        {
                            lat: 42.704931,
                            lng: 2.894697,
                            data: 'Perpignan ! <br> GO USAP !'}
                            ],
                            marker: {
                                options: {
                                    draggable: false
                                },
                                events: {
                                    click: function(marker, event, data) {
                                        var map = $(this).gmap3('get'),
                                        infowindow = $(this).gmap3({
                                            action: 'get',
                                            name: 'infowindow'
                                        });
                                        if (infowindow) {
                                            infowindow.open(map, marker);
                                            infowindow.setContent(data);
                                        } else {
                                            $(this).gmap3({
                                                action: 'addinfowindow',
                                                anchor: marker,
                                                options: {
                                                    content: data
                                                }
                                            });
                                        }
                                    }
                                }
                            }
                        });
    });​
    </script>
    </head>
    <body>
        <div id="map" style="width: 400x; height: 400px"></div>​
    </body>
    </html>