Javascript 放在web服务器上时未加载有效的KML

Javascript 放在web服务器上时未加载有效的KML,javascript,google-maps,google-maps-api-3,kml,godaddy-api,Javascript,Google Maps,Google Maps Api 3,Kml,Godaddy Api,试图做一些简单的事情,但似乎有什么东西把它抛了出去。只想从网页加载一个KML文件 所以我在Google Earth上制作了一个非常简单的KML文件,上面有一个地名,然后保存下来并上传到我们的定向越野俱乐部网站(如果有什么不同的话,就放在GoDaddy上)。然后我从网页上复制了html代码,并将其加载到我的网站上,然后更改了关键代码——工作正常 接下来我所做的就是更改lat/long位置值,然后列出我自己的kml文件,完整的URL。。它拉起一张地图,居中,但没有地标。啊 我已经读过了,想知道服务器

试图做一些简单的事情,但似乎有什么东西把它抛了出去。只想从网页加载一个KML文件

所以我在Google Earth上制作了一个非常简单的KML文件,上面有一个地名,然后保存下来并上传到我们的定向越野俱乐部网站(如果有什么不同的话,就放在GoDaddy上)。然后我从网页上复制了html代码,并将其加载到我的网站上,然后更改了关键代码——工作正常

接下来我所做的就是更改lat/long位置值,然后列出我自己的kml文件,完整的URL。。它拉起一张地图,居中,但没有地标。啊

我已经读过了,想知道服务器端是否需要做些什么来读取KML?因为它是一个GoDaddy主机,如果这是问题,我无法控制它

KML只列出了一个地名,我已经通读了谷歌地图模式,这一切似乎都是合法的。反正在这儿

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
    <name>Test1</name>
    <Style id="s_ylw-pushpin">
        <IconStyle>
            <scale>1.3</scale>
            <Icon>
                <href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>
            </Icon>
            <hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/>
        </IconStyle>
    </Style>
    <Placemark>
        <name>testmark</name>
        <styleUrl>#s_ylw-pushpin</styleUrl>
        <Point>
            <gx:drawOrder>1</gx:drawOrder>
            <coordinates>-73.20975393157571,44.46282408596932,0</coordinates>
        </Point>
    </Placemark>
</Document>
</kml>

测试1
1.3
http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png
测试标记
#s_ylw-图钉
1.
-73.20975393157571,44.46282408596932,0
如前所述,我只是使用了与KML Layers网页完全相同的文本,并将位置更改为我的lat/long(工作),但从未找到KML文件。 "... var ctaLayer=new google.maps.KmlLayer({ url:“”, 地图:地图 ……”

也曾在多个浏览器中尝试过。IE用一个无法清除Active X控件的消息栏阻止了它,Chrome和Firefox显示了一个空白地图

当我尝试了几个JSFIDLE选项后,添加KML链接时总是失败


完整链接有什么问题吗?!!有什么想法吗?很抱歉是这样一个nube,但……这是真的。

KML文件必须公开访问(而不是使用密码/登录名)为了让Earth and Maps能够访问和加载它。您提供的URL会导致服务器上的404页面…因此,可能该文件已不存在,或者由于我未经身份验证/登录而不允许我访问该文件?请尝试将KML放在您100%确定为公共的位置(通过匿名选项卡测试访问)

正如注释中提到的JASOM1,您还需要确保所服务的文件的MIME类型设置正确。如果您将该文件设置为公共文件,但继续获取原始XML而不是KML文件下载,那么请检查MIME类型设置

如果您真的只想在Google地图上添加一个点,那么使用Maps API选项添加标记可能会更容易


哦,当我直接复制到地球上时,您提供的示例KML看起来和工作起来都很好。

因此答案是双重的,并且与MIME类型和完全公开的URL都有关联

  • MIME类型:因此,我的网站托管在GoDaddy上,由于您无法像在完整的Windows服务器上那样控制MIME类型,您需要添加一个web.config文件,我在上面提到过。添加该文件似乎是关键,但对于GoDaddy,您可能需要等待>24小时才能注册。这是一段痛苦的时间,尤其是当你不会告诉你它起作用了。你只要继续努力……说些烦人的话

  • 完全公开的URL:所以这一个属于“你一定是在开玩笑”,因为我知道我的网站是公开的,html文件将加载并居中于底图,但没有呈现KML。问题是我的链接开始“…”时KML链接不需要“s”,只是“http://.ACK!我使用的脚本不知怎的得到了一个‘s’,这就是工作的结束


  • 所以在这两者之间,这是行不通的。可能看到了“s”,但我从来没有发现MIME类型的问题。非常感谢各位!!

    您检查过内容类型(MIME类型)了吗从服务器?有时,当您将文件发布到文件服务器时,url是指向通过JavaScript自动加载内容的网页,而不是KML内容本身。您是否验证了url是内容-尝试类似cURL的方法首先获取url。MIME类型…从来没有这样做过。Quick web search为web.config文件提供了此信息,但当我将其加载到根目录时,映射仍然没有加载Placemark.system.webServer>我可以向您保证,实际的KML文件比单个Placemark要复杂一些。:)对…我认为您的KML不止一点。:-)对于MIME类型,看起来应该是正确的,但如果没有工作的KML URL,则很难确认。是否可以共享工作的KML链接,以验证MIME问题并尝试其他调试?仅供参考,有关MIME类型的文档位于本页底部: