【问题标题】:Google Maps v3. Infowindow with jquery tabs谷歌地图 v3。带有 jquery 选项卡的信息窗口
【发布时间】:2011-12-19 16:00:13
【问题描述】:

我是 Gmaps 编程的初学者。

我想创建一个包含两个选项卡的信息窗口,其中一个仅包含信息,另一个包含一些 HTML 表单(按钮和文本)。

http://gmaps-samples-v3.googlecode.com/svn/trunk/infowindow/tabs.html

var checkText = "Coordinates";

var content = [
  '<div id="tabs">',
  '<ul>',
    '<li><a href="#tab_1"><span>One</span></a></li>',
    '<li><a href="#tab_2"><span>Two</span></a></li>',
  '</ul>',
  '<div id="tab_1">',
     '<p>Marker i:"</p>'+
     '<form id='button'>'+
       '<div>'+
         '<input type='submit' value='Submit' />'+
       '</div>'+
     '</form>',
  '</div>',
  '<div id="tab_2">',
    '<p>Info: '+checkText+'</p>',
  '</div>',
  '</div>'
].join('');

然后,事件监听器:

google.maps.event.addListener(infoWindow, 'domready', function() {
  $("#tabs").tabs();
});

google.maps.event.addListener(marker, 'click', function(event) {
  infoWindow.setContent(content);
  infoWindow.open(map, marker);
});

选项卡和按钮都完美显示,但我不知道如何将其与操作关联,例如:

marker.draggrable = true;  // letting the marker to move
checkText =  marker.getPosition();  // changing the tab info whenever marker moves

我猜这个问题与 jquery-tabs 无关,而是与任何带有 html-form 的信息窗口有关。 谢谢。

//----------------------------

我将简化我的问题。

我准备了这个例子,你可以在信息窗口中找到一个“按钮”: http://www.sipa.es/prueba_fer/index_prueba.html

如何将操作与该按钮相关联? 比如改变缩放、打开新窗口等。

谢谢

【问题讨论】:

    标签: javascript google-maps-api-3 jquery-ui-tabs infowindow


    【解决方案1】:

    标记对象有drag events:

    • drag:当用户拖动标记时,会重复触发此事件。
    • dragend:当用户停止拖动标记时触发此事件。
    • draggable_changed:当标记的可拖动属性改变时触发此事件。
    • dragstart:当用户开始拖动标记时触发此事件。

    然后在事件触发时更新您的内容

    google.maps.event.addListener(marker, 'dragend', function(event) {
        checkText = this.getPosition();
        content = [
            '<div id="tabs">',
                    '<ul>',
                        '<li><a href="#tab_1"><span>One</span></a></li>',
                        '<li><a href="#tab_2"><span>Two</span></a></li>',
                    '</ul>',
                '<div id="tab_1">',
                    '<p>Marker i:"</p>'+
                    '<form id="button">'+
                        '<div>'+
                            '<input type="submit" value="Submit" />'+
                        '</div>'+
                    '</form>',
                '</div>',
                    '<div id="tab_2">',
                        '<p>Info: '+checkText+'</p>',
                    '</div>',
            '</div>'
        ].join('');  
    
    });
    

    更新:

    好的,当元素附加到 DOM 时,您需要确保在信息窗口中捕获这些元素。 Infowindows 有一个domready 事件。我更新了您示例中的函数以显示这一点。另外,请记住回发将重置地图。你没有说是否需要回帖,所以我用e.preventDefault();取消了它

    (function () {
         var marker = new google.maps.Marker({
              map: map,
              draggable: false,
              position: new google.maps.LatLng(40.30, -3.71)
         });
         var content = "<div id='tabs'>" +
                       "<form id='button'>" +
                       "<div>" +
                       "<input id='btn' type='submit' value='Submit'/>" +
                       "</div>" +
                       "</form>" +
                       "</div>";
    
         google.maps.event.addListener(marker, 'click', function (event) {
                infoWindow.setContent(content);
                infoWindow.open(map, this);
                map.setCenter(this.getPosition());
    
         });    
    
         google.maps.event.addListener(infoWindow, 'domready', function (e) {
               //attach the click event to the button.
               document.forms.button.btn.onclick = function (e) {
                    e.preventDefault(); //cancels the post back.
                    var currentZoomLevel = map.getZoom();
                    map.setZoom(currentZoomLevel - 2); //zoom out two levels
                };    
         });   
    
    })();
    

    【讨论】:

    • 谢谢,但这不是我的问题,我已经为我的问题添加了一些说明和示例...
    • 太好了,它有效!不知道什么是“回发”,我不是程序员,我需要一些时间来吸收一些概念。非常感谢您的有用回答。
    猜你喜欢
    • 2011-05-03
    • 2013-05-18
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多