2016-12-03 8 views
0

私はfor()を使ってさまざまな内容のinfowindowを入れようとしていますが、うまくいきません。この私のコード:Googleマップinfowindowsの問題点for()

var infowindow=[]; 
var myMarker=[]; 
var marker=[]; 
for (i = 0; i < dl.length; i++) { 
    myMarker[i]=new google.maps.LatLng(lt[i], ln[i]); 
    marker[i] = new google.maps.Marker({ 
    position: myMarker[i], 
    map: map 
    }); 
} 

for (var i = 0; i < dl.length; i++) { 



google.maps.event.addListener(marker[i],'mouseover', function(){ 

    infowindow[i] = new google.maps.InfoWindow({ 
    content:dl[i] 
    }); 
    infowindow[i].open(map,marker[i]); 
    }); 

    google.maps.event.addListener(marker[i],'mouseout',function() { 
    infowindow[i].close(); 
    }); 
    google.maps.event.addListener(marker[i],'click',function() { 
    alert("Y ahora te abriría otra pagina... si tuviera una"+i); 
    }); 


} 

私はイベントのリスナーを使用しようとしましたが、それは悪くなります。

変数:dl[],lt[],ln[]が初期化されました。

答えて

0

情報ウィンドウはそのようには機能しません。各マーカーのmouseoverイベント中にinfowindowの単一のコピーを作成し(配列を維持する代わりに)、その内容をinfowindow.setContent()で設定します。

編集:あなたの応答であなたのソリューションが動作し、またはここでより簡潔な解決策であるだろう。

var myMarker=[]; 
var marker; 
var infoWindow = new google.maps.InfoWindow(); 
for (i = 0; i < dl.length; i++) { 
    myMarker[i]=new google.maps.LatLng(lt[i], ln[i]); 
    marker = new google.maps.Marker({ 
    position: myMarker[i], 
    map: map 
    }); 
    (function(msg) {marker.addListener('mouseover', function() { 
    infoWindow.setContent(msg); 
    infoWindow.open(marker.get('map'), marker); 
    }); 
    })(dl[i]); 
    marker.addListener('mouseout', function() { 
    infoWindow.close(); 
    }); 
} 
+0

こんにちは非常によく動作します!ちょうど、私はTheeternalpuzzleの答えのあなたの要求された編集を見て、編集を拒否することを票決しました。その答えを編集して追加のコードを追加するのではなく、改善されたコードを自分の答えに追加する方が良いでしょう。 (そして、StackOverflowへようこそ。あなたの仲間の開発者を助けてくれてありがとう!) –

0

が、私はこれをやってendend、それは

var myMarker=[]; 
var marker; 
for (i = 0; i < dl.length; i++) { 
    myMarker[i]=new google.maps.LatLng(lt[i], ln[i]); 
    marker = new google.maps.Marker({ 
    position: myMarker[i], 
    map: map 
    }); 
    attachSecretMessage(marker, dl[i]); 
} 


function attachSecretMessage(marker, secretMessage) { 
    var infowindow = new google.maps.InfoWindow({ 
    content: secretMessage 
    }); 

    marker.addListener('mouseover', function() { 
    infowindow.open(marker.get('map'), marker); 

    }); 

    marker.addListener('mouseout', function() { 
    infowindow.close(); 
    }); 

    } 
関連する問題