56

ローカル kml ファイルをロードする hello world プログラムを作成しました (Google のドキュメントから借用):

var ctaLayer = new google.maps.KmlLayer("http://localhost:8080/kml/cta.kml");

これは機能しません (何もロードされません)。

ただし、その行を次のように変更すると:

  var ctaLayer = new google.maps.KmlLayer("http://gmaps-samples.googlecode.com/svn/trunk/ggeoxml/cta.kml");

それは正しく読み込まれます。両方の kml ファイルは同一です。自分で提供するときにロードするにはどうすればよいですか? (絶対パスと相対パスの両方を試しましたが、使用しているパスが正しいことはわかっています...)

また、アプリサーバーの構成ファイルに正しい MIME タイプを追加しました。

<mime-mapping>
    <extension>kml</extension>
<mime-type>application/vnd.google-earth.kml+xml</mime-type>
</mime-mapping>
<mime-mapping>
    <extension>kmz</extension>
    <mime-type>application/vnd.google-earth.kmz</mime-type>
</mime-mapping>

しかし、まだ読み込まれません。

私はグーグルのドキュメントでこれを見つけました:

Google Maps API は、地理情報を表示するために KML および GeoRSS データ形式をサポートしています。これらのデータ形式は、KmlLayer オブジェクトを使用してマップ上に表示されます。このオブジェクトのコンストラクターは、公開されている KML または GeoRSS ファイルの URL を取得します。

だから私がやろうとしていることは、公にアクセス可能なURLからkmlを提供しないと不可能だと思います...誰かがそうでなければ証明できない限り

4

4 に答える 4

61

KML はローカル マシン上にあるためアクセスできず、Google は localhost:8080 へのアクセス方法がわからないためアクセスできません。

于 2010-08-18T18:35:02.670 に答える
42

残念ながら、「localhost」は使用できません。2つの選択肢があります。

  1. kmlを公開されているドメインに配置します。(グーグルがそれにアクセスできない場合、それは機能しません)
  2. 基本的にgoogleが行うことを実行しますが、パーサーJSファイルを自分でダウンロードしてホストできるgeoxml3を使用します。これにより、LOCALHOST KMLをロードして解析することができます(JSON経由でアクセス可能なオブジェクト)(http://code.google.com/p/geoxml3/)。

kmlがバックグラウンドでグーグルに送信されて地図上にレンダリングされるため、防衛契約に取り組んで機密情報を扱う人にとって、選択肢1は選択肢ではないかもしれません。

于 2010-10-08T13:55:24.013 に答える
18

このウェブサイトdisplay-kml.appspot.comでは、KML ファイル全体をコピーしてウェブサイトに貼り付ける必要があります。または、Dropboxを使用して、パブリック フォルダーを使用して KML ファイルをホストすることもできます。パブリック Dropbox フォルダ内には、URL をコピーできる右クリック コンテキスト メニューがあります。

アップデート:

アプリスポットの Web サイトには、不安定だった歴史があります。2019 年 1 月現在、この Web サイトは機能しているようです。

参考文献:
  1. http://display-kml.appspot.com/
  2. https://www.dropbox.com/
于 2011-10-18T15:08:09.740 に答える