将jQuery对话框附加到Google Maps标记中的InfoBubble

时间:2013-01-16 15:04:32

标签: javascript google-maps google-maps-api-3 jquery-dialog infobubble

我使用谷歌地图v3进行编码。我想添加jQuery并将事件处理程序附加到infoBubble(一个可自定义的infoWindow jscript扩展我得到here)。

具体来说,我想让用户点击infoBubble中的链接,并使用jQuery-UI弹出一个对话框。对话框表单将提示用户输入,随后将存储在MySQL中。

我已经坚持了一个月。这是我最接近的事情:

Attach event handler to element inside google maps info bubble

下面是我用于创建地图标记的javascript函数:

注意:想法是如果将事件处理程序附加到infoBubble工作,我会用jQuery-UI表单替换function() {alert("hi!");}。但它不起作用我尝试过使用“var str = 'onClick=formPopUp()';”,但javascript不支持带有多个条目的提示对话框表单。另外,我真的不知道如何在一个javascript函数中使用如formPopUp()的jQuery-UI调用。抱歉,如果它令人困惑)

function createMarker(map, latlng, fields, name) {
      var str = "id='user-creates'";

      var html = "<b><font size='5'>" + fields["name"] + "</font></b>" + "</br>" + 
             "<font size='2'>" + fields["google_rating"] + " / 5.00" + "</font>" + "</br>" + 
                 "<font size='2'>" + fields["type"] + "</font>" + "</br>" + 
                 "<font size='2'>" + "Hours" + "</font>" + "</br>" + 
                 "</br>" + 
                 "</br>" +
                 "<font size='2'>" + "Top Reviews " + "(<i>" + fields["num_reviews"] + " Reviews</i>)" +  "</font>" + "</br>" + 
                 "<div " + str + ">" +  "Example</div>" + 
                 "</br>" + 
                 "</br>" + 
                 "<font size='2'>" + "Photos " + "(<i>0 Photos</i>)" + "</font>" + "</br>" +
                 "</br>" + 
                 "</br>" +
                 "<font size='2'>" + "Friends Who've Been Here " + "(<i>0 Friends</i>)" + "</font>" + "</br>" +
                 "</br>" + 
                 "</br>" +
                 "<font size='2'>" + fields["address"] + "</font>" + "</br>" + 
                 "<font size='2'>" + fields["phone_num"] + "</font>" + "</br>" + 
                 "<font size='2'><a href=" + fields["web_url"] + "Website" + "</a></font>";


      var marker = new google.maps.Marker({
            map: map,
            position: latlng
      });

      infoBubble = new InfoBubble({
            map: map,
            position: latlng,
            borderColor: '#D14836',
            borderWidth: 4,     
      });

      google.maps.event.addListener(marker, 'click', function() {
        infoBubble.setContent(html);

        google.maps.event.addListenerOnce(infoBubble, 'domready', function(){
             //jQuery code here
             google.maps.event.addDomListener($(infoBubble.getContent()).find('#user-creates')[0], 
                                'click', function() {alert("hi!")}); 

        });

        infoBubble.open(map, marker); 

        });

    }

1 个答案:

答案 0 :(得分:0)

此字符串:

var str = 'id=user-creates';

不是在HTML中嵌入的正确格式。

需要:

var str = "id='user-creates'";