google maps - отслеживать событие клика по содержимому информационного окна - PullRequest
0 голосов
/ 03 ноября 2011

код моей карты Google:

function initialize(mapdata){
    var LatLng=new google.maps.LatLng(mapdata[0],mapdata[1]);
    var myOptions= {
        zoom:16,
        scaleControl:true,
        streetViewControl:false,
        panControl:true,
        mapTypeControl:true,
        center:new google.maps.LatLng(mapdata[0],mapdata[1]),
        mapTypeId:google.maps.MapTypeId.ROADMAP
    };
    var map=new google.maps.Map(document.getElementById("map"), myOptions);
    document.getElementById("map").style.height="200px";
    document.getElementById("map").style.width="450px";
    var infowindow=new google.maps.InfoWindow();
    var marker=new google.maps.Marker({position:LatLng});
    marker.setMap(map);
    google.maps.event.addListener(marker,'mouseover',function(){
        infowindow.setContent(<div style="text-align:right; font-size:8pt; color:black;">click here<a href="http://www.google.com/"></a> </div>');
        infowindow.open(map,marker);
    });
}

мой вопрос: как я могу отслеживать аналитику после события щелчка в содержимом информационного окна?

Заранее спасибо, Ирена

1 Ответ

1 голос
/ 03 ноября 2011

взгляните на Analytics Guide Tracking Guide

<a href="#" onClick="_gaq.push(['_trackEvent', 'Videos', 'Play', 'Baby\'s First Birthday']);">Play</a>

и обратите внимание, что ваш infowindow.setContent(<div... пропускает ' до ('<div

UPDATE

, чтобы установить событие onclick для ссылки в информационном окне, вы должны использовать событие JQuery Live.Это потому, что ссылка отсутствует до тех пор, пока мы не нажмем на маркер, чтобы отобразить информационное окно.

, поэтому для реализации события click на <div> в информационном окне вы хотите сделать что-то вроде:

google.maps.event.addListener(marker,'mouseover',function(){
        infowindow.setContent('<div style="text-align:right; font-size:8pt; color:black;" id="some_id_here">click here<a href="http://www.google.com/"></a> </div>');
        infowindow.open(map,marker);
});
$("#some_id_here").live('click', function() {
    alert('click');
});

помните, что я дал div id="some_id_here"

, если у вас есть несколько одновременно открываемых информационных окон, вам нужно отменить привязку события live перед его сбросом.Иначе возможно, что событие live('click') связывается несколько раз.Для этого вам нужно сделать следующее:

$("#some_id_here").die('click').live('click', function() {
...