我的Google地图配置为显示蓝色位置标记。
我的地图使用以下.kml文件(仅描述通过Google Maps API 显示蓝色位置标记的地方的xml数据),我使用普通的旧XMLHttpRequest对象加载。
我的问题是,当我从外部源(例如“http://xyz.com/kumedplaces.kml”)加载.kml文件时,它可以工作,但是当我存储它并尝试从我的sitecore网站运行的本地服务器,Google地图对象不会在地图上加载/显示蓝色位置标记。
以下是我在.kml文件中加载地址后在.js文件中的操作:
<div id="map" style="width: 400px; height: 300px"></div>
var kmlUrl = "http://xyz.com/kumedplaces.kml"; works
var kmlUrl = "/js/heart/kumedplaces.kml"; doesn't work
var geoXml = new GGeoXml(kmlUrl);
map.addOverlay(geoXml);
顺便说一下,我在本地仔细检查以确保我的本地.kml文件正确加载
我的.kml文件示例:
<?xml version="1.0" encoding="utf-8" ?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name>University of Kansas Hospital Locations</name>
<description>The various buildings around the city that comprise the University of Kansas Hospital</description>
<Style id="randomColorIcon">
<IconStyle>
<color>ff00ff00</color>
<colorMode>random</colorMode>
<scale>1.1</scale>
<Icon>
<href>http://maps.google.com/mapfiles/kml/pal3/icon21.png</href>
</Icon>
</IconStyle>
</Style>
<Placemark id="kumed">
<name>The University of Kansas Hospital</name>
<description>
Part of the Kansas University Medical Center complex.
3901 Rainbow Blvd, Kansas City, KS 66160
</description>
<address>3901 Rainbow Blvd, Kansas City, KS 66160</address>
<phonenumber>xxxxxxx</phonenumber>
<ExtendedData></ExtendedData>
<!--<styleUrl>#randomColorIcon</styleUrl>-->
<Point>
<coordinates>-94.608800,39.0558241</coordinates>
</Point>
</Placemark>
</Document>
</kml>
答案 0 :(得分:0)
看起来KML文件无法在本地保留或至少被引用。 See this other question。尝试将HTTP域附加到文件路径的开头而不是绝对路径? (例如http://yourdomain.com/js/heart/kumedplaces.kml)
答案 1 :(得分:0)
KML文件需要公开访问(因为它们需要由Google服务器读取),据我所知,您无法在本地引用KML文件(因为Google不知道在哪里查找它们)。
答案 2 :(得分:0)
您需要将正确的MIME类型添加到您的网络服务器以提供kml和kmz文件。
kml
- application/vnd.google-earth.kml+xml
kmz
- application/vnd.google-earth.kmz
假设您正在使用IIS7,请在IIS7管理器中的Mime类型下添加这些。