谷歌地图v3neneneba API标记在关闭其信息窗口(InfoBubble)时会消失

Google maps v3 API markers dissapears when closing its InfoWindow (InfoBubble)

本文关键字:窗口 信息窗 InfoBubble 消失 信息 API v3neneneba 谷歌地图      更新时间:2023-09-26

我对JavaScript和谷歌地图API很熟悉。我搞不清楚出了什么问题。

InfoWindow实际上是我发现的一个类"InfoBubble"。http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobubble/examples/example.html/

情况如下:

1. I create my map and add a 'click' event. The event creates Markers. 
2. I create one global infoWindow.
3. I click the map, a Marker appears.
4. I click the map, a Marker appears.
5. I click the map, a Marker appears. Step 3-5 can be repeated lots and lots.
6. I click marker number X 
  6.1. An infoWindow pops up.
7. I click marker number Y 
  7.1. The infoWindow is closed. (.close())
  7.2. Its content and position is changed
  7.3. It is opened on the new position (.open(map,marker))
  7.4. Also Marker number X is removed.

自己试试:http://dl.dropbox.com/u/6084360/test/index.html

为什么是步骤7.4。发生事情发生后,我可以点击标记,但我觉得没有任何东西消失为什么

我尝试过通过Google Chrome进行一些调试,但在执行步骤7.3后,它会将我带入一些缩小的代码中,我会迷路。

这是删除标记的线。我不知道它为什么删除它,也不知道从哪里开始。

R.addDomListenerOnce=function(a,b,c,d){var e=R[yc](a,b,function(){e[wb]();return c[Cc](this,arguments)},d);return e};R.R=function(a,b,c,d){c=cf(c,d);return R[yc](a,b,c)};function cf(a,b){return function(c){return b[oc](a,c,this)}}R.bind=function(a,b,c,d){return R[G](a,b,P(c,d))};R.addListenerOnce=function(a,b,c){var d=R[G](a,b,function(){d[wb]();return c[Cc](this,arguments)});return d};R.forward=function(a,b,c){return R[G](a,b,df(b,c))};R.ua=function(a,b,c,d){return R[yc](a,b,df(b,c,!d))};

我的代码:

    var times = 0;
    var treasureLocation = new google.maps.LatLng(62.05350309096103, 15.373047874999997);
    var map, infoBubble = null;
    function initialize() 
    {   
        // Create the actual map.
        map = new google.maps.Map(document.getElementById("map_canvas"), 
            {
              zoom:         4,
              center:       new google.maps.LatLng(62.05350309096103, 15.373047874999997),
              mapTypeId:    google.maps.MapTypeId.ROADMAP
            }
        );
        infoBubble = new InfoBubble({
            disableAutoPan: true
        });
        // Add an eventlistener to the map.
        google.maps.event.addListener
        (
            map, 
            'click', 
            function(ev)
            {
                addMarker(ev);
            }
        );              
    }
    function addMarker(ev)
    {
        // Get the distance.
        var distance = getDistance( ev.latLng , treasureLocation );
        // Skriv ut vart man klickade.
        document.getElementById("click_info").innerHTML = "Du klickade " + distance + " ifrån skatten, försök igen!";
        // Create a marker
        var marker = new google.maps.Marker({
            position:   ev.latLng,
            map:        map,
            clickable:  true,
            title:      "Härifån är det bara " + distance + " till skatten!",
            icon:       "shovel.png"
        });
        // Hook the click on the created marker to show the created popup
        google.maps.event.addListener
        (
            marker,
            'click',
            function(ev)
            {
                if( infoBubble != null ){infoBubble.close();}
                infoBubble.setContent(marker.title);
                infoBubble.setPosition(marker.position);
                infoBubble.open(map, marker);
            }
        );
    }

我真的无法解释原因,但似乎infoBubble.setPosition(marker.position);在制造麻烦。只需删除它。您正在使用infoBubble.open(map, marker);来定义气泡位置,所以您不需要它。