1

オブジェクト インスタンスを制御せずに (および初期化せずに)、既存の Google マップ オブジェクトに KML レイヤーを追加しようとしています。

これまでのところ、オブジェクトが (DOM): window.google.maps... にあることがわかりました (わかりました、これは単なるコンストラクタであり、レンダリングされた Map オブジェクト自体ではありません)。

これは、google.maps.Map オブジェクトの既存の (?) インスタンスに追加したいものです。

var kmlUrl = 'http://.../polygon-simple.kml';

var kmlOptions = {
  suppressInfoWindows: false,
  preserveViewport: true
};

var kmlLayer = new window.google.maps.KmlLayer(kmlUrl, kmlOptions);

Map オブジェクトを含むページはホスティング会社によって提供され、独自の jQuery ウィジェットを使用してオブジェクトを生成します。html-body 内に JavaScript を追加できます (マップの「サーバー側」の作成も行われます)。

使用されている JS ファイルと CMS で追加された JS のソースを変更できないため、既存のオブジェクトに対処して次のようにする必要があります。

kmlLayer.set(obj.Map);

追加を適用して Map オブジェクトを更新します。しかし、明らかにうまくいきません。

私はウェブサイト全体をファイアバグし、jQuery ウィジェットによって生成された Map インスタンスを見つけようとしましたが、何もありませんでした。サイト上のすべてのオブジェクトをトラバースしましたが、何もありませんでした。

Google マップのコードを完全に自分で書くという選択肢はありません。なぜなら、非開発者のためにバックエンドでコードを構成可能にしておく必要があるからです。

問題はjQueryウィジェットの問題に向かっていると思います...よろしくお願いします!

4

1 に答える 1

0

window.google.maps.Map は地図オブジェクトではなく、そのオブジェクトのコンストラクタです。オブジェクト自体は別の城 (変数) にあります。

obj instanceof google.maps.Map 

オブジェクトが googlemaps Map オブジェクトの場合は true を返す必要があります。変数が本当に見つからない場合は、ページ上のすべてのオブジェクトを再帰的に通過するループを記述して、この行に true を返すオブジェクトを見つけることができます。

Chrome デバッガーの補足として、Map オブジェクトは次のように表示されます。 地図

地図の種類が「em」であると書かれていますが、これはかなり奇妙です。これは、GoogleMaps ライブラリが縮小されているためです。

于 2014-03-03T14:44:08.730 に答える