2017-03-27 14 views
-1

私の質問は重複しているように見えますが、実際はそうではありません。私のコードは大部分が動作していて、情報ウィンドウのコンテンツ部分を理解したいだけです。すべてを書き直す必要はありません。情報バブルに動的情報を追加する

私はビジネスのリストをループし、地図上にマーカーをプロットしています。クリックして開くinfowindowを追加するまで、すべて正常に動作します。私は右のポイントの横にそれを開くことができましたが、内部の値は常に最新のマップマーカーに属しています。どうすれば修正できますか?

for (var i = 0; i < restaurants.length; i++) { 
    var restaurant = restaurants[i]; 
    var customlabl = (restaurant[5] != 0 ? "$"+restaurant[5] : false); 
    var customtitl = (restaurant[5] != 0 ? restaurant[0]+" -- "+restaurant[5] : restaurant[0]); 

    var infowindow = new google.maps.InfoWindow({ 
     content: customtitl 
    }); 

    var marker = new google.maps.Marker({ 
     position: { 
      lat: restaurant[1], 
      lng: restaurant[2] 
     }, 
     map: map,   
     title: customtitl, 
     label: customlabl 
    }); 
    marker.addListener("click", function() { 
     infowindow.open(map, this); 
    }); 
    bounds.extend(marker.getPosition()); 
} 
map.fitBounds(bounds); 

上記のコードでは、infowindowを正しく開くことができます。そこで、マーカーからコンテンツにラベルやタイトルを選択するように変更しました。

marker.addListener("click", function() { 
    var infowindow = new google.maps.InfoWindow(); 
    infowindow.content(title, this); 
    infowindow.open(map, this); 
}); 

何らかの理由で、これが機能しなくなり、インフォボックスが開かなくなります。何が欠けている?

答えて

1

Wellコンテンツは、google.maps.InfoWindowではなくInfoWindowOptionsオブジェクトで定義されています。だから、このようなものに変更してみてください動作させるために

marker.addListener("click", function() { 
    let infoOptions = { 
    content: 'hello world' 
    }; 

    let infowindow = new google.maps.InfoWindow(infoOptions); 
    infowindow.open(map, this); 
}); 

または

let infowindow = new google.maps.InfoWindow({content: 'hello world'}); 
+0

はい、おかげで動作しますが、どのように私は動的なコンテンツを追加できますか? 「hello world」をcustomtitlに置き換えると、最後にレンダリングされたマーカーから取得します。 – santa

+1

あなたはマーカーのイベントリスナーに{content:this.title}を設定するだけです。 – FrankCamara

関連する問題