2011-12-04 5 views
0

Googleマップを使用してperl CGIを使用してデータベースからデータを表示するWebアプリケーションがあります。 Googleマップの代わりにGoogle Earth(スタンドアロン、プラグインではなく)でデータを表示するオプションを追加することにしました。CGIを開くとブラウザのリンクからGoogleのKMLファイルが生成される

どのように動作するのですか:ユーザーはフォームを入力し、フォームに基づいてURLを生成するjavascriptを呼び出すリンクをクリックします。フォームの入力に応じて、1〜30のURLを開くことができます。

生成されたURLの例:「http://wildlifedb-testing.buffalofieldcampaign.org//qs.pl?format=kml & STARTDATE = 2007-11-27 & ENDDATE = 2007年12月4日&種=バイソン&活動= & centerlat = 44.714721 & centerlon = -111.159067 & centerdist = 15 &リミット= 2000"

私はそのURLを取り、GEにネットワークリンクとして追加し、それがうまく開きますが、私がすることができますすることができます」それをブラウザから直接GEに開く方法を理解してください。 window.location = urlを設定しようとしましたが、ブラウザがファイルをダウンロードするだけです。

そして、はい、私は右の設定MIMEタイプを持っている: "アプリケーション/ vnd.google-earth.kml + xml" で

答えて

1

GEは、ブラウザから直接開くことができません。あなたは、サーバがユーザが開くKMLを含むダウンロード可能なファイルを生成させる必要があります。

これをWikipediaがどのように処理するのかを確認してください。地理上のページ(右上の緯度/経度)からGeoHackに移動します.GooHackはGEを含む多くのマッピングサイトを提供します。いくつかのサイトはWebアプリケーションなので直接開くことができます。 GEのリクエストは、デスクトップアプリであるためダウンロードしてKMLを送信します。セキュリティ。

+0

GeoHackを見て、問題が私のhttpヘッダーであると判断し、Content-Disposition:attachmentを追加しました。ヘッダーにfilename = "sightings.kml"を入力すると、ダウンロード後にGEで開くことができました。おかげで – Jesse

+0

あなたはあなたのアプリが走ってうれしい。私はこの問題のためにGEのプラグインに切り替えました。しかし、それは別の問題のセットを作ります... – KTys

0

だから、それは問題、私はヘッダに以下を追加することで解決することができたHTTPヘッダと1区切るすることになった:

のContent-処分:添付ファイルを。ファイル名の代わりに、Google EarthのAPIを使用することはできwindow.locationの

0

を設定する=「sightings.kml」

他の問題は、私はwindow.openを(使用することにより解決することができた複数のファイルを開くことができるされていました) Google Earthのブラウザベースの実装を実現します。 http://code.google.com/apis/earth/

または、基本的なインターフェイスのために、この http://earth.google.com/kmlpreview/#url=http://www.example.com/path/to/file.kml

(ちょうどあなたのURLをURLENCODEすることを確認するように - あなたは特別な文字を持っているように)にKMLのURLを渡す

Example here

関連する問題