0

Google Maps API を使用するのはこれが初めてです。それぞれが独自のインフォボックスを必要とする複数のポリゴンを含むスタイル設定されたマップがあります。インフォボックスのスタイルを設定する必要があります。私の問題は、インフォボックスがまったく機能しないことです。私は何日も解決策を探していましたが、これを試してみましたhttp://google-maps-utility-library-v3.googlecode.com/svn/tags/infobox/1.1.9/examples/infobox- basic.html明らかに何か間違ったことをしているに違いありません。

ここに私のコードがあります: http://pastebin.com/M23PPXpn

4

2 に答える 2

2

Infobox をポリゴンに接続すると、infobox.js でこのエラーが発生することに気付きました

Uncaught TypeError: Object #<V> has no method 'getPosition'

これは、ポリゴンがエリアを表し、マーカーがポイントを表していることが原因である可能性があります。各インフォボックスを固定するために、ポリゴン内のどこかに目に見えないマーカーを 1 つ作成することをお勧めします。

このアイデアで、オーストラリアのポリゴンにインフォボックスを追加しました。ポリゴンのクリック リスナーは引き続き作成されますが、非表示のマーカーに関連付けられた情報ボックスが開きます。

// ... this is near the end of your code...

australia_new_zealand.setMap(map);
google.maps.event.addListener(australia_new_zealand, 'mouseover', function() {
    this.setOptions({fillColor: "#28d1e9"}); 
});
google.maps.event.addListener(australia_new_zealand, 'mouseout',function(){
 this.setOptions({fillColor: "#06376a"});   
});

      // marker inside the Australia polygon, LatLng was manually defined
      var australia_new_zealand_center = new google.maps.Marker({
        map: map,
        position: new google.maps.LatLng(-24.5271348225978, 134.296875),
        visible: false
      });

      var boxText = document.createElement("div");
      boxText.style.cssText = "border: 1px solid black; margin-top: 8px; background: yellow; padding: 5px;";
      boxText.innerHTML = "City Hall, Sechelt<br>British Columbia<br>Canada";

      var myOptions = {       
        content: boxText,
        maxWidth: 0,
        pixelOffset: new google.maps.Size(-140, 0),
        zIndex: null,
        boxStyle: {  background: "url('tipbox.gif') no-repeat", opacity: 0.75, width: "280px" } ,
        closeBoxMargin: "10px 2px 2px 2px",
        closeBoxURL: "http://www.google.com/intl/en_us/mapfiles/close.gif",
        infoBoxClearance: new google.maps.Size(1, 1),
        isHidden: false,
        pane: "floatPane",
        enableEventPropagation: false
      }

      // listener responds to a click inside polygon
      google.maps.event.addListener(australia_new_zealand, "click", function (e) {
        ib.open(map, australia_new_zealand_center);
      });

      var ib = new InfoBox(myOptions);

//(end) REGION - AUSTRALIA NEW ZEALAND
}  
于 2012-03-10T02:17:32.590 に答える
0

例の遊び場でこの遊び場を試してみてください

于 2012-03-09T19:39:35.967 に答える