web-dev-qa-db-ja.com

Googleマップはどのように機能しますか?

サーバーがユーザーからリクエストされたマップの一部のみを送信してパフォーマンスを向上させることができるGoogleマップの背後にあるテクノロジーの名前は何ですか?これを処理するためのライブラリはありますか?

40
ahmed

このテクノロジーは、一般的にマップサーバーと表現できます。マップサーバーは、惑星全体をカバーする事前に生成された大量のマップタイル画像から、要求された場所のマップを生成します。マップサーバーは、この上に他のデータベースからのデータをオーバーレイできます。マップビューアクライアントと地理データベースの組み合わせは、伝統的に地理情報システム(GIS)と呼ばれています。

誰でも Google Maps API を使用して、Googleマップを埋め込むWebアプリケーションを作成できます。独自のマップをデプロイする場合は、( MapServer と呼ばれる)オープンソースの地図サーバーも用意されています。サーバ。

28
rupello

前述のように、Googleはこれらの256x256タイルをすべて生成し、関連するタイルを提供しているだけです。あなたのコメントから、あなたはあなたのためにこれらのタイルを生成するために何かを探しているようです。何人かの人々が画像をタイルに切り分けるコードを書いています-例えば http://crazedmonkey.com/blog/googletilecutter または http://www.klokan.cz/projects/gdal2tiles / どちらもあなたが探していることを実行できるようです。

9

以下は、EveryBlock.comの創設者の1人からWebベースのマップを生成するためのオープンソーススタックの概要です。 http://www.alistapart.com/articles/takecontrolofyourmaps

2

独自の画像で Google Maps API を使用することもできます。もちろん、マップである必要はありません。任意の画像を使用できます。これにより、ユーザーはGoogleマップのようにドラッグアンドズームできます。

2
pkaeding

Googleマップページのリンクを見ると、次のようになります。

http://maps.google.com/maps?f=q&hl=en&sll=37.0625,-95.677068&sspn=53.345014,88.769531&ie=UTF8&ll=41.226264,-81.454246&spn=0.012507,0.021672&z=16

ページ上のJavaScriptコードとサーバーコードは、リンク内の数値を使用して、表示しているマップの場所、ズームレベル、および表示ウィンドウのサイズを決定し、ブラウザーに送信するタイルを決定します。

マッピングデータと、データを表示およびナビゲートするツールを提供できる商用ライブラリがあります。以前に使用したのは Geomicro です。

2
Geoff

これは、オープンソースで自分で試すことができるものです http://www.geoserver.orghttp://www.openlayers.org そして最後に重要なことですが- http://geowebcache.org/

数時間でmaps.googleと同じようなことを行う最小限の環境をセットアップできるはずです。

2
Jonke

基礎となる分野の一般的な名前は [〜#〜] gis [〜#〜] です。

一般的な好奇心から詳細を求めていますか、それともプロジェクトに特定の技術的なニーズがありますか?

1
Richard Ev

Googleは、これらの画像を販売するサービスから高解像度の衛星写真を取得し、これらの画像を保存してトリミングし、特定の場所を見るときに必要なものだけを提供します。つまり、ズームインしたときとズームアウトしたときに、正方形のタイルが表示されていることに気づきましたか?これらは、Googleサーバーがサービスを提供しているものです。

また、GoogleファイルシステムとMapReduceを使用して負荷を処理する方法も考慮する必要があります。

1
Tsundoku

質問に答えるのではなく、情報を広げてください。 Microsoftには、Silverlight用の「ディープズーム」と呼ばれるものがあります。これにより、このような効果を簡単に実行できます。

その無料のcomposerここで、画像(または1つの大きな画像)を並べて他のいくつかの設定を行います。その後、ズームごとに1つのフォルダーにサブフォルダー内の多数の小さな画像に分割します。 -level。次に、それらをスムーズに使用できるページを作成します。

それについての良いブログエントリ: http://weblogs.asp.net/jgalloway/archive/2008/03/21/why-silverlight-2-deep-zoom-really-is-something-new.aspx

0
Stefan

これは、(AJAXなどを使用して)個別にダウンロードされる正方形のチャンクで構成される巨大な画像です。ある種の内部Googleライブラリ(GWTの場合もある)によって行われていると思います。

このトピックの詳細: http://blog.grimpoteuthis.org/2005/02/mapping-google.html

0
Mike Hordecki

私は、非常に大規模な歴史的な計画やスケッチのために、クロスブラウザービューアーに取り組んでいます。 http://www.cadmaps.com/gisblog/?p=7 で見つけた最初のステップ(古いブログ)の良いヘルプは、画像のピラミッドを理解する(Googleマップで動作するものです) 。

「タイラー」を使用して、testImage_0001111100.pngのような多くの画像を生成します。 0001111100は、5番目のズームレベルであり、画像ピラミッドのx/y位置です。ほとんどの計算(隣接画像、画像スタックの上下)は、ajaxリクエストによって呼び出されるphpによってサーバーサイドで行われます。

私は今、スムーズなシフトとズームの問題(解決できない)に悩んでいます。それが私の問題ですが、記事を読んでください。

0
humbleweed

GoogleマップとGoogle Earthは、KML、または「Keyhole Markup Language」と呼ばれるものを使用します。これは、XMLの特殊なバリアントです。これは、最初の地理追跡衛星に敬意を表して名付けられました。このマークアップを使用して特定の緯度と経度の座標をジオコーディングすることにより、Google Earth内の場所に関する情報を保存できます(その結果、Googleマップまで流れます)。高度を含めることもできます。

0
Robert Elwell