0

質問はかなり説明的です。

私は撮影場所を提供するウェブサイトに取り組んでいます。

現在、サイト内のすべてのデータは、Google マップのジオコード データを含む MySQL データベースに保存されています。

場所を持つさまざまなロンドン自治区のポリゴン エリアを表示する必要があります。

すべてのデータを kml ファイルとして持っています。理想的には、これを MySQL データベースに保存したいと考えています。

フュージョン テーブルを使用してこのデータを表示することに成功しましたが、フュージョン マップ レイヤーを使用するためだけにこのデータを Google で複製する必要があるのはばかげているように思えます。融合テーブルを作成し、それからレンダリングしますか?

もしそうなら、誰かが私に詳しい情報を教えてくれるリソースはありますか?

更新: これまでの回答に感謝します。もう少し情報を追加して質問を更新すると思いました。

最終的には、マップ上にすべてのエリアを同時に表示したいと考えています。理想的には、エリアをクリックすると、その特定のエリアの場所を示す Web サイトの別のページに移動します。

最初に KML レイヤーを使用しようとしましたが、KML が無効であるというエラーが表示されました。KML は当初、データベース テーブルのフィールドに格納されていました。おそらく、エラーは、Google が KML データをどのように読み取ったかを正確に理解していなかったためだと思います。

ポリゴンを使用すると、JSON を介してこのデータを取得し、そこからポリゴンをレンダリングできるため、実装がはるかに簡単になります。

ポリゴンを含む情報ウィンドウを表示することはできないことはわかっていますが、情報ウィンドウを表示するのではなく、クリック ハンドラーを使用してその特定の領域の情報を含む別の Web サイト ページに直接ジャンプしたいだけです。または、エリアの簡単な説明とページへのリンクを含むツールチップを表示することをお勧めしますが、ツールチップ自体はどのようにマップの上にレンダリングできますか?

KML のレイヤー制限に達しないか少し心配です。1 つのレイヤーで KML を使用して複数のポリゴンをレンダリングすることはできますか? または、クリック可能な領域ごとに個別のレイヤーが必要ですか?

4

3 に答える 3

3

Google Maps API は、多角形を描画するための非常に簡単な方法を提供します。

基本的な例:

var polygon = new google.maps.Polygon({
  map: your_google_map_instance,
  paths: array_of_latlng_points,
  fillColor: "#336699",
  fillOpacity: .5,
})

編集: このアプローチでは、KML ファイルを解析する必要があります (最初に読んだときに見逃していたはずです)。KML ファイルをKML レイヤーにインポートできます

于 2013-01-14T18:22:33.200 に答える
1

さまざまなマウス イベントでツールチップ、情報ウィンドウ、ステータス テキストを表示できるように、多くのイベントを持つデータ レイヤーを試すこともできます。ドキュメントのサンプルを参照してください: https://developers.google.com/maps/documentation/javascript/datalayer

多くのポリゴンがある場合 (多くの実際の値は複数の要因に依存し、100 から 1,000 の間になる可能性があります)、組み込みのレイヤー タイプを使用するのが最適です。最速のものは、サーバー上でレンダリングされるものです。たとえば、kml レイヤーは、ブラウザーで何百もの DOM 要素を作成するわけではありませんが、クリック イベントを公開するため、アイテムごとにインフォボックスを表示できます。

最悪の場合、mapnik のような既存のライブラリを使用して、イメージ マップを使用して独自のレンダリングを実装できます。 https://developers.google.com/maps/documentation/javascript/maptypes#ImageMapTypes

于 2014-07-09T19:58:00.267 に答える
1

KmlLayer、 FusionTablesLayer (ご存じのとおり)、またはネイティブの google.maps.Polygon オブジェクトを使用して、ポリゴンをオーバーレイできます。

KmlLayer と FusionTablesLayer はそれらをタイルとしてレンダリングするため、多数のポリゴン (クリック イベントのみが必要な場合) のほうが効率的です。一度にマップに表示できる KmlLayers の数と FusionTablesLayer には制限があります (ただし、これらが問題を引き起こしているようには見えません)。

KML で使用できるサードパーティのパーサー ( geoxml3geoxml-v3 ) もあります。これは、KML を取得してネイティブgoogle.maps.Polygon オブジェクトとしてレンダリングします。多くのポリゴンの場合、これはタイルベースのレンダリングよりも効率が悪くなりますが、マウスオーバー/マウスアウト、およびポリゴンのプロパティの動的な変更は可能です。

于 2013-01-14T18:14:28.963 に答える