- ベストアンサー
webサービス上のkmlをgooglemapsに表示させたい
- googlemapsとルート表示のwebapiをマッシュアップしたい。
- GGeoXmlでルートをmaps上に表示するためのコードを作成しましたが、地図が表示されません。
- 地図の表示がされない原因について、詳しい方に教えていただきたいと思います。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
自前のサーバーは入りません。私も無料のレンタルサーバーを 使っています。保存する仕組みは、PHPやcgiが使えないレンタル サーバーだと無理ですが。自分の手でKMLをアップできるのなら 表示可能のはずです。その際、KMLのファイル名でなくURLを指定 してWebサーバー経由で読込みます。 以下リファレンスの抜粋です。 <class GGeoXml> GGeoXml オブジェクトは地理的コンテンツをパブリックにアクセス可能なウェブサーバー上でホストされている XML ファイル (KML ファイルなど) の地図に追加します。これは、GOverlay インターフェースを実装し、このため GMap2.addOverlay() メソッドを使用して地図に追加されます。 ===================
その他の回答 (3)
- yyr446
- ベストアンサー率65% (870/1330)
No1,No2です。時間があったので色々試し手見たのですが、 GGeoXmlのURLに直接 "http://api.cirius.co.jp/wrs/1.0.0/suuchi/lonlat/shortest_path.kml?start=140.839%2038.348&end=140.899%2038.355&sridIn=4301&api_key=mykey" をセットすると何故かうまくいかないですね。MapApiでエラーになります。同期が取れないみたいです。 "http://api.cirius.co.jp/wrs/1.0.0/suuchi/lonlat/shortest_path.kml?start=140.839%2038.348&end=140.899%2038.355&sridIn=4301&api_key=mykey" の結果を、いったんそのまま保存して、保存したものを var geoXml = new GGeoXml("http://myweb/shortest_path.kml", function(){ のようにセットすると出来るのですが.... 解決にいたってなくて申し訳ありません。
お礼
いろいろ試していただきうれしい限りです。 自分のjavascriptファイルは無料サーバ上のフォルダ内においてあり、 kmlファイルを同じフォルダ内に置くことはできますが、認識されていません。自前サーバーを作るしかないのでしょうか? できれば保存の操作無しでいけるとありがたいですが・・・・ いずれにしてもご教授に心から感謝いたします!!!!!
- yyr446
- ベストアンサー率65% (870/1330)
No1の補足です。KMLファイルのタグ名は大文字小文字は区別されます ので注意してください、(xhtmlとは違います。) 例だと以下の様なkmlファイルを作れば表示できます。 <?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://earth.google.com/kml/2.1"> <Document> <name>WebRouting Service</name> <Style id="LineStyle"> <LineStyle> <color>7f0000ff</color> <width>4</width> </LineStyle> </Style> <Placemark> <name>Shortest Path</name> <description>No+description+available</description> <styleUrl>LineStyle</styleUrl> <MultiGeometry> <LineString> <coordinates> 140.851,38.348 140.852,38.347 </coordinates> </LineString> <LineString> <coordinates> 140.853,38.343 140.854,38.343 140.855,38.344 140.856,38.345 </coordinates> </LineString> <LineString> <coordinates> 140.858,38.343 140.860,38.343 </coordinates> </LineString> <LineString> <coordinates> 140.863,38.343 140.899,38.555 </coordinates> </LineString> </MultiGeometry> </Placemark> </Document> </kml> ちなみに、JAVASCRIPTの方は、 var geoXml = new GGeoXml(kmlファイルのURL名, function(){ map.clearOverlays(); map.addOverlay(geoXml); map.panTo(geoXml.getDefaultCenter()); map.setZoom(map.getBoundsZoomLevel(geoXml.getDefaultBounds())); geoXml.show(); }); みたいにしてfunction onLoad()の中の map.setCenter(new GLatLng(38.348, 140.839), 13); の後ろに入れてみたらどうでしょう?
お礼
分かりやすく丁寧な回答に感謝します!! 実際にご提案どおりにさせて頂きましたが、 やはり地図も表示されず残念ですがまだ未解決です。 三つ目のご回答に沿ってこれから試してみたいと思います。 知恵を拝借させていただき本当に助かっております!!!
- yyr446
- ベストアンサー率65% (870/1330)
kmlファイルって <?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://earth.google.com/kml/2.1"> で始めるのではないでしょうか? 質問に載せている例ではhtmlのような...
お礼
ご指摘ありがとうございます。 kmlファイルは確かにそのように始めますよね。 うっかりしておりました!
お礼
何とか表示できました! 何度も分かりやすく教えていただき 本当に助かりました。 どうもありがとうございました!!