web-dev-qa-db-ja.com

グーグルマップv3は円に情報ウィンドウを追加します

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);
}); 

または、円の中心に非表示のマーカーを作成して、クリックして情報ウィンドウにアクセスできるようにする方法もあります。

18
trs

サークルオーバーレイの情報ウィンドウを作成できます。ただし、コードを少し調整する必要があります。

まず、サークルオーバーレイに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);
});

コメントへの回答:非表示のマーカーを使用してトリックを作成できます(マーカーアイコンとして完全に透明な画像を配置するだけです)が、サークルオーバーレイ。

42
Tomik

マウスがクリックされた場所に情報ウィンドウを設定するには

google.maps.event.addListener(circ, 'click', function(ev){
    infoWindow.setPosition(ev.latLng); //<-- ev matches what you put ^ (mouse event)
    infoWindow.open(map);
});
2
Doug