为什么我的代码无法加载KML文件..(这是最简单的方法)

0 投票
2 回答
1264 浏览
提问于 2025-04-15 20:39

这是我的谷歌地图代码:

<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
        <meta name="viewport" content="width=device-width,minimum-scale=0.3,maximum-scale=5.0,user-scalable=yes">

    </head>
<body onload="initialize()" onunload="GUnload()">

<style type="text/css">
*{
    margin:0;
    padding:0;
    }
</style>
<!--<div style="width:100px;height:100px;background:blue;"> </div>-->
<div id="map_canvas" style="width: 500px; height: 300px;"></div>


<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAA-7cuV3vqp7w6zUNiN_F4uBRi_j0U6kJrkFvY4-OX2XYmEAa76BSNz0ifabgugotzJgrxyodPDmheRA&sensor=false"type="text/javascript"></script>

<script type="text/javascript">
var aFn;
//**********
function initialize() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map_canvas"));
        var g = new GGeoXml("b.kml");
                map.addOverlay(g);
                var center=new GLatLng(37.42228990140251,-122.0822035425683);
        map.setCenter(center, 0);

}
}
//*************



</script>
</body>
</html>

这是我的 b.kml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Placemark>
    <name>Simple placemark</name>
    <description>Attached to the ground. Intelligently places itself 
       at the height of the underlying terrain.</description>
    <Point>
      <coordinates>-122.0822035425683,37.42228990140251,0</coordinates>
    </Point>
  </Placemark>
</kml>

为什么这个点显示不出来呢……

谢谢

2 个回答

0

你需要提供一个可以公开访问的 .kml 文件的链接。

在火狐的开发者工具中,你不会看到对这个文件的请求。地图的API会向谷歌请求一个资源,并把你的 .kml 文件的名字传过去。谷歌会把这个文件拉到他们的服务器上进行处理,然后把结果以 JSON 格式发送回你页面上的地图。

这是我的看法,可能你会有不同的体验。

0

我最初的想法是,你可能缺少了 <Document></Document> 这部分内容,不过查看文档后,我不太确定这是不是问题所在。

请问 b.kml 的 MIME 类型是否设置为 application/vnd.google-earth.kml+xml?根据文档来看,这似乎是一个必要条件:http://code.google.com/apis/kml/documentation/kml_tut.html#kml_server

其他想法:

  • new GGeoXml("b.kml") 调用中,给出 b.kml 的完整网址
  • 打开 Firebug,看看是否成功请求了 b.kml

撰写回答