7

KML や KMZ データから Google マップ オーバーレイを生成できるもの、できれば F/OSS を探しています。

昨年は約 16,000 のプレース マーカーを収容するために必要なイベント サイトがあり、今年も少なくともその数になる可能性があります。昨年、このサイトを作成した会社は、KML データを直接 gMaps API に送り、すべてのマーカーをクライアント側に配置しました。明らかに、これはパフォーマンスの悪夢となり、古いブラウザーを「フリーズ」させる傾向がありました (少なくとも一度に数分間フリーズしたように見えます)。

理想的には、このサーバー サイド スクリプトは、KML、マップの緯度/経度の中心、およびマップのズーム レベルを取得し、すべての表示可能な場所マーカーを単一の GIF または PNG オーバーレイに適切にマージします。

これに関するガイダンスや推奨事項は大歓迎です。

2008 年 10 月 8 日更新- 私がここや他の場所で見つけた情報のほとんどは、マップ上のポイントの数を減らすことが進むべき道であることを示しているようです (つまり、1 つのマーカーを使用して、複数の場所から見るときに複数を表します)。より高い高度/ズーム レベル)。場合によってはこれがおそらく良い方法ですが、ここではうまくいきません。何千ものマーカーが配置された米国の地図の視覚的な影響を探しています。私が検討した 1 つのオプションは、PushPinというサービスです。、(おそらく) KML が供給されると、サーバー側で、すべての可視ポイント (中心緯度/経度とズーム レベルに基づく) が単一の画像にレンダリングされるオーバーレイが作成されるため、クライアント側で数千の DOM 操作を実行する代わりに、これらすべてのマーカーを単一の画像サーバー側にマージし、クライアント側で単一の DOM 操作を行います。PushPin サービスは非常に洗練されており、関連するコストがなければ確実に機能します。私たちは、サーバー側で実行してそのオーバーレイを自分で生成できるF/OSS本当に探しています。

4

5 に答える 5

4

GeoserverMapserverのようなものを調べたいと思うかもしれません。それらはGoogleマップのクローンであり、他にもたくさんあります。

好きなオーバーレイを生成できます。Geoserver(mapserverも同様だと思います)は、KML、PDF、png、およびその他の出力を提供してマップを混合することも、マップ全体を自分で生成することもできますが、これには時間がかかります。

于 2008-10-06T14:49:58.933 に答える
2

GIF / PNGオーバーレイに移動する理由がわからない場合は、KMLで直接実行できます。パフォーマンスの問題のほとんどは、ユーザーの現在のビュー外のポイントが原因であると想定しています。つまり、ユーザーはニューヨークを見ていますが、ロサンゼルスには、表示されていないためにメモリを浪費しているポイントがあります。あなたが本当に典型的なもののために一度にすべてが見える16,000ポイントを持っているなら、はい、あなたは別の戦略を追求する必要があるでしょう。

上記が当てはまる場合、手順は次のようになります。

  1. マップの中心と範囲を決定します
  2. マップの左上隅と右下隅の緯度/経度を計算できるはずです。
  3. ポイントのデータベースを反復処理し、2つのコーナーに対して各場所を確認します。経度は、左上の経度よりも大きく(符号付き!)、右下の経度よりも小さい必要があります。緯度は、左上の緯度(符号付き!)より小さく、右下の緯度より大きくする必要があります。単純な比較であり、ここでは特別な計算は必要ありません。
  4. 一致するポイントをユーザーの一時的なKMLに出力します。
  5. KMLをGoogleマップに直接フィードしてマップさせるか、JavascriptマップAPIを使用してKML経由でポイントを読み込むことができます。

ここでは正確な問題を解決できない場合がありますが、関連する問題については、Google StaticMapsAPIを調べることもできます。これにより、プレースマーカーを含む静止画像ファイルを作成できます。このファイルは非常に高速に読み込まれますが、通常のGoogleマップのようなインタラクティブ機能はありません。ただし、APIの設計方法が原因で、16,000ポイント近くも処理できないため、ビューにフィルターをかける必要があります。

于 2008-10-06T15:29:04.020 に答える
1

プロジェクトの運賃はわかりませんが、GeoDjangoをご覧ください。この変更されたDjangoリリースには、場所を保存するためのあらゆる種類のツールが含まれています。簡単な方法で、座標を変換して地図を表示します。オフコースでは、Pythonの経験とそれを実行するためのサーバーが必要ですが、Djangoのコツをつかめば、高速でうまく機能します。

問題の解決策が必要な場合は、より低いズームレベルで結果をグループ化してみてください。この実装の良い例は、ここにあります。

于 2008-10-06T14:57:33.570 に答える
0

OpenLayersは、複数のマッピングサービスまたは独自のマップサーバーへの優れたJavaScriptフロントエンドです。バージョン2.7がリリースされたばかりで、かなり驚くべき機能とコントロールが追加されています。

于 2008-10-06T15:26:10.907 に答える
0

これは大変なことです。Google マップでカスタム タイルセットを使用できますが、タイルを生成するには何らかの方法が必要です (手動以外で)。

私が持っているのはそれだけです=/

于 2008-10-06T14:47:57.817 に答える