Google Maps API使用KML文件,地图为空白

时间:2011-03-04 16:14:46

标签: javascript api google-maps kml

我的KML中的以下代码显示了灰色地图:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
    <Document>
    <name>test.kml</name>

    <Placemark>
            <name>Cha Boutique</name>
            <description>
                <![CDATA[
                    9666 Clayton Rd.<br />
                    Ladue, MO 63124<br />
                    Phone: 314-993-8080
                ]]>
            </description>
            <Point>
                <coordinates>38.638428,-90.389736</coordinates>
            </Point>
        </Placemark>

    </Document>
</kml>

但是这段代码成功地显示了一个标记:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
    <Document>

        <name>test.kml</name>

<Placemark>
    <name>Yahoo! Inc.</name>
    <description><![CDATA[
      Yahoo! Inc.<br />
      701 First Avenue<br />
      Sunnyvale, CA 94089<br />
      Tel: (408) 349-3300<br />
      Fax: (408) 349-3301<br />
      <p>Home page: <a href="http://yahoo.com">http://yahoo.com</a></p>
      ]]>
    </description>
    <Point>
      <coordinates>-122.0250403,37.4163228</coordinates>
    </Point>
  </Placemark>

    </Document>
</kml>

创建地图的JavaScript是:

Event.observe(window, 'load', function()
{
var chicago = new google.maps.LatLng(41.875696,-87.624207);
  var myOptions = {
    zoom: 11,
    center: chicago,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var ctaLayer = new google.maps.KmlLayer('http://www.domain.com/test.kml');
  ctaLayer.setMap(map);
});

有人知道我在这里缺少什么吗?如果您认为这应该绝对有效,那么我需要开始查看网站上可能会影响这一点的其他内容,但对我而言,交换KML标记不应该是它是否有效的因素,除非我有一些错误。

感谢您的帮助!

-Ryan

3 个答案:

答案 0 :(得分:2)

永远不信任用户输入的是什么?

事实证明,坐标是相反的。在输入地址(来自他们的URL)之后,他们直接从Google地图直接进入,但看起来KML文件需要它们的顺序相反。

很好的经验教训:)

-Ryan

答案 1 :(得分:1)

您是否测试了kml加载谷歌地图?

如果你去maps.google.com,我应该有一个我的地图链接(在左侧),可以导入KML文件。如果它加载然后我会开始查看你的代码,如果没有,它可能是KML文件本身的问题。

编辑:我试图加载kml文件,它似乎导致我的谷歌地图冻结使用铬,所以我不能真正告诉你它是否是kml,但对我来说它看起来像一个良好的形式的xml文件。

答案 2 :(得分:1)

新的google.maps.KmlLayer()需要完整的合格域名。例如:http://localhost无法使用。