gmap3
これはかなり古い質問であることは承知していますが、Google Maps APIに関する最近の経験に基づいて、少し情報を追加できると思いました。
ライブラリを使用するルートをinfobox
たどる代わりに (gmap3 ライブラリを操作するのは少し難しいことがわかりました)、マーカー クリック イベントをバインドして、必要に応じてスタイルを設定できるオーバーレイを生成することにしました。
したがって、JSONにすべてのアドレスをオンにします
// JSON
var data = JSON.parse('[
{
"address":"New Street, Salisbury, UK",
"content":"hello world from salisbury"
},
{
"address":"86000 Poitiers, France" ,
"content":"hello world from poitiers"
},
{
"address":"66000 Perpignam, France",
"content":"hello world from perpignam"
}
]');
gmap のデフォルトを設定しました
// Gmap Defaults
$map.gmap3({
map:{
options:{
center:[46.578498,2.457275],
zoom: 5
}
}
});
JSON をループしてマップを作成します
// Json Loop
$.each(data, function(key, val) {
$map.gmap3({
marker:{
values:[{
address:val.address,
events: {
click: function() {
gmap_clear_markers();
$(this).gmap3({
overlay:{
address:val.address,
options:{
content: '<div class="infobox">'+val.content+'</div>',
offset:{
y:-32,
x:12
}
}
}
});
}
}
}]
}
});
});
このgmap_clear_markers()
関数は、他のすべてのインフォボックス (オーバーレイ) インスタンスの削除をトリガーします。
// Function Clear Markers
function gmap_clear_markers() {
$('.infobox').each(function() {
$(this).remove();
});
}
これで、JSON に必要な数のアドレスを追加できるようになり、それに応じてスタイルを設定できるクラス infobox を含む単純な div ラッパーを含む infobox が作成されます。
これがこれを行うための最良の方法であるかどうかはわかりません-これが私にとってうまくいったと言っているだけです.
これがJSFIDDLEの例です