Google.maps.Circleによって作成されたサークルにinfoWindowを追加する方法はありますか?
このようなもの
var circ = new google.maps.Circle({
center:latlng,
clickable:false,
fillColor:colors[count],
fillOpacity:0.3,
map:map,
radius:radius,
strokeColor:colors[count],
strokeOpacity:0.3});
そして
//create info window
var infoWindow= new google.maps.InfoWindow({
content: "Your info here"
});
//add a click event to the circle
google.maps.event.addListener(circ, 'click', function(){
//call the infoWindow
infoWindow.open(map, circ);
});
または、円の中心に非表示のマーカーを作成して、クリックして情報ウィンドウにアクセスできるようにする方法もあります。
サークルオーバーレイの情報ウィンドウを作成できます。ただし、コードを少し調整する必要があります。
まず、サークルオーバーレイにclickable=true
を設定する必要があります(そうしないと、サークルのクリックイベントは処理されません)。
次に、クリックリスナーのコードを変更する必要があります。関数open()のパラメーターとして円を入れても効果はありません(説明については、円は適切な種類のMVCObjectではありません。 InfoWindow 。open()関数のドキュメントを参照してください)。情報ウィンドウを表示するには、その位置を指定する必要があります-例:クリックイベントの位置、円の中心、..。
コードは次のようになります
google.maps.event.addListener(circ, 'click', function(ev){
infoWindow.setPosition(ev.latLng);
infoWindow.open(map);
});
または
google.maps.event.addListener(circ, 'click', function(ev){
infoWindow.setPosition(circ.getCenter());
infoWindow.open(map);
});
コメントへの回答:非表示のマーカーを使用してトリックを作成できます(マーカーアイコンとして完全に透明な画像を配置するだけです)が、サークルオーバーレイ。
マウスがクリックされた場所に情報ウィンドウを設定するには
google.maps.event.addListener(circ, 'click', function(ev){
infoWindow.setPosition(ev.latLng); //<-- ev matches what you put ^ (mouse event)
infoWindow.open(map);
});