3

私はこれで午前中ずっと壁に頭をぶつけていました。ポリゴンの配列を作成していますが、infoWindow に表示されるデータをそれぞれに関連付けたいと考えています。マップ上にすべてのポリゴンが表示されます。リスナーを追加すると、リスナーが起動します (色の変化が発生します) が、infoWindow が表示されません。どんな助けでも大歓迎です!

乾杯!

ち...

tmppoly = new google.maps.Polygon({
   map: map,
   paths: polypath,
   strokeColor: scolor,
   strokeOpacity: 0.5,
   strokeWeight: 2,
   fillColor: fcolor,
   fillOpacity: 0.5
});

addPolygonClick(tmppoly,mdata);
plot_polygons.push(tmppoly);

...

function addPolygonClick(poly,html) {

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

    google.maps.event.addListener(poly,'click', function(event) {
        this.setOptions({fillColor: "#000000"});
        infowindow.open(map);
    }); 

}
4

3 に答える 3

8

私はあなたの質問についていくつかの有用な提案を提供することができます。

まず、メソッド'infowindow.open(map、anchor?:MVCObject)'に関する式を知っておく必要があります。google api v3が言うように:コアAPIでは、唯一のアンカーはMarkerクラスです。ポリゴンクラスは条件に一致しませんが、別の方法で実現できます。

var polygon = new google.maps.Polygon({
    paths: PGpoints,   //The PGpoints is the collection of points around this polygon.
    map: map,
    strokeColor: colory,
    strokeOpacity: 0.6,
    strokeWeight: 1,
    fillColor: colory,
    fillOpacity: 0.35       
});

polygon.set("Info", idy);  // Set some attributes for adding extra information into this polygon.   

google.maps.event.addListener(polygon, 'click', function() {
    var infoWindow = new google.maps.InfoWindow();
    infoWindow.setContent("Information : " + polygon.get("Info"));

    // 'laty,lngy' is the location of one point in PGpoints, which can be chosen as you wish
    infoWindow.setPosition(new google.maps.LatLng(laty,lngy));     
    infoWindow.open(map);
});

上記のコードはテストに合格しています。直接使用できます。次に、1つのポリゴンをクリックすると、infoWindowがマップの上に表示されます。

于 2012-09-26T08:44:55.737 に答える
2

これが機能しない原因として考えられる問題がいくつかあります。

1: infowindow をローカル変数にするには、変数を infowindow の前に置く必要があります。

var infowindow = new google.maps.InfoWindow(...

そのままでは、新しいクリック リスナーを追加するたびに infowindow 変数を置き換えています。

2: 情報ウィンドウの位置またはアンカーを指定する必要があります ( http://code.google.com/apis/maps/documentation/javascript/reference.html#InfoWindowOptionsを参照)。

唯一の有効なアンカーはマーカーであるため、'position' プロパティを指定することをお勧めします。「位置」は有効な google.maps.LatLng オブジェクトでなければなりません。ポリゴンの中心を計算して位置として使用したいと思うでしょう。

map がグローバル変数であることも確認する必要がありますが、コードの残りの部分を見ている可能性があります。

于 2011-08-21T04:49:28.063 に答える
0

このhttps://developers.google.com/maps/documentation/javascript/examples/event-closureを見て、上記の応答と組み合わせて、ポリゴンの配列内の各ポリゴンに一意のメッセージを割り当ててください。

また、ポリゴンごとに固有のメッセージを持つ 1 つのレイヤーに複数のポリゴンを配置する作業も行っています。私はまだ成功していません。上記の応答で、情報ウィンドウが表示されましたが、すべてのポリゴンに対して同じメッセージが表示されます。問題を解決したら、解決策を投稿します。

于 2013-08-12T00:32:24.697 に答える