0

しばらくコードを作成し、infowindow のスタイルを設定し、他のベルを追加した後、infowindow が DOM の一部ではないことに気付きました。まず第一に、私はコンピューターのことは初めてで、この DOM のアイデアを理解しているかどうか確信が持てません。これに関する記事をかなり読んでいます。

コードの簡略化された (フィドル) バージョンがHEREにあります。

このフィドルに加えて、infowindow の代わりに infobubble とモーダル ウィンドウ (または派手なウィンドウ、人々はそれを別の名前で呼んでいるようです) があります。ご存知でしたら、jsファイルをフィドルにアップロードしていただければ幸いです。ローカル js ファイル。

私は2つのことのいずれかを達成しようとしています:

a) モーダル ウィンドウを infoBubble 内で、または 2 番目のオプションとして機能するようにします。

b)setTimeoutによって中断されることなく、YouTubeビデオを再生するだけです。そして、ユーザーがユーチューブからクリックを外すと (またはビデオが終了すると)、情報ウィンドウのローテーションが再開されます。

私は、モーダルとインフォバブルとGoogleマップを連携させるためだけに(数日間)取り組んできました。しかし、infowindow の DOM の問題は、一種の非土地です (少なくとも私にとっては)。ここでいくつか質問がありますが、わかりませんでした。Googleによると、「コンテンツには、開いたときに情報ウィンドウ内に表示するテキスト文字列または DOM ノードが含まれています」誰かがそれを手伝ってくれませんか?DOM に情報ウィンドウを追加するには? または、ビデオを再生する方法と、この場合、settimeout まで停止する方法は?

あなたの時間と専門知識をありがとうございました。実際のコードは次のとおりです。

var BERLIN = new google.maps.LatLng(-12.517683, -46.394393);
var map = null;
var marker;
var index = 0;
var MY_MAPTYPE_ID = 'custom_style';


function initialize() {

      var featureOpts = [  //personal options

      ];                                                    // end of personal options

     var mapOptions = {                                 // begining map options
        zoom: 2,
        center: BERLIN,
        mapTypeControlOptions: {
          mapTypeIds: [google.maps.MapTypeId.ROADMAP, MY_MAPTYPE_ID]
        },
        mapTypeId: MY_MAPTYPE_ID,
        draggable: false,
        zoomControl: false,
        panControl: false,
         streetViewControl: true,
        streetViewControlOptions: {
            position: google.maps.ControlPosition.LEFT_TOP
        },
        mapTypeControl: true,
        mapTypeControlOptions: {
            style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
            position: google.maps.ControlPosition.right_TOP
        },  
    }                                                                       //  end of map options
    var map = new google.maps.Map(document.getElementById('map-canvas'),
    mapOptions);
     var styledMapOptions = {
     name: 'Custom Style'
     };

     customMapType = new google.maps.StyledMapType(featureOpts, styledMapOptions);
map.mapTypes.set(MY_MAPTYPE_ID, customMapType);


    function dropMarker (map, pos, box){
                            var box = infobubbles[index];
                            var infoBubble;
                            return new google.maps.Marker({
                            map: map,
                            position: pos,
                            draggable: false,
                            //link:url,
                            });     
    }

    var infoBubble; 
    function changeMarker() {

    if (marker) {
            infoBubble.close();
            marker.setMap(null);    
        }
        var pos = neighborhood[index];
        var box = infobubbles[index];
            setTimeout(function () {
            infoBubble.open(map, marker);
        }, 200);

        index = (index+1) % neighborhood.length;
        setTimeout(function () {
            changeMarker();
        }, 7000);   
        marker = dropMarker(map,pos,box);

         contentString =('<div id="content">'+
            'lat:' + box.lat + '&nbsp;' + 
            'lng:' + box.lng  + '<br />' + 
            'name:' + box.name+ '<br />' + 
            '<a href=http://'+ box.link+box.link+'</a>' + '<br />' )


        infoBubble = new InfoBubble({  
                  maxHeight:200,
                  maxWidth:400,
                // position: new google.maps.LatLng(),
                  map: map,
                 content: contentString,
                  shadowStyle: 1,
                  padding: 2,
                  backgroundColor: 'rgb(55,55,55)',           // set the back of ALL info window, not only the text area. 
                  borderRadius: 5,
                  arrowSize: 20,
                  borderWidth: 10,
                  borderColor: '#000',
                  disableAutoPan: true,
                  hideCloseButton: false,
                  arrowPosition: 50,  // sets position of arrow - 50 is the middle. 
                  backgroundClassName: 'phoney',
                  arrowStyle: 0,
        });
        infoBubble.open(map, marker); 
} 
            $.ajax({
                type : 'POST',
                url : 'php/locationsJson.php',
                dataType : 'json',

                success: function( json ){
                        neighborhood=[];
                        infobubbles=[];

                        $.each(json,function(i,item){
                            neighborhood.push(new google.maps.LatLng(this.lat,this.lng));
                            contentString = ({link:this.link,name:this.name,lat:this.lat,lng:this.lng,link:this.link})
                            infoBubble = new InfoBubble (contentString)
                            infobubbles.push(infoBubble)


                     });    //$.each

         changeMarker();    
                } // end of success
            });//end of ajax        

}  //end of initialized

google.maps.event.addDomListener(window, 'load', initialize);

  function updateStyles() {
    var shadowStyle = document.getElementById('shadowstyle').value;
    infoBubble.setShadowStyle(shadowStyle);

    var padding = document.getElementById('padding').value;
    infoBubble.setPadding(padding);

    var borderRadius = document.getElementById('borderRadius').value;
    infoBubble.setBorderRadius(borderRadius);

    var borderWidth = document.getElementById('borderWidth').value;
    infoBubble.setBorderWidth(borderWidth);

    var borderColor = document.getElementById('borderColor').value;
    infoBubble.setBorderColor(borderColor);

    var backgroundColor = document.getElementById('backgroundColor').value;
    infoBubble.setBackgroundColor(backgroundColor);

    var maxWidth = document.getElementById('maxWidth').value;
    infoBubble.setMaxWidth(maxWidth);

    var maxHeight = document.getElementById('maxHeight').value;
    infoBubble.setMaxHeight(maxHeight);

    var minWidth = document.getElementById('minWidth').value;
    infoBubble.setMinWidth(minWidth);

    var minHeight = document.getElementById('minHeight').value;
    infoBubble.setMinHeight(minHeight);

    var arrowSize = document.getElementById('arrowSize').value;
    infoBubble.setArrowSize(arrowSize);

    var arrowPosition = document.getElementById('arrowPosition').value;
    infoBubble.setArrowPosition(arrowPosition);

    var arrowStyle = document.getElementById('arrowStyle').value;
    infoBubble.setArrowStyle(arrowStyle);
  }
4

0 に答える 0