Google 地球的文档说我应该能够访问本地驱动器上的文件,但我找不到示例,当我尝试在本地驱动器上使用 KML 时,它似乎没有加载。我看到很多答案说它无法完成,但是为什么文档中另有说明呢?
我的代码
var href = 'http://code.google.com/'
+ 'D:/visual studio 12/Projects/myMap/myMap/myPoints.Kml';
例子
网络链接
网络链接包含一个带有(超文本引用)加载文件的元素。可以是本地文件规范或绝对 URL。尽管名称如此,但 a 不一定从网络加载文件。链接中的 指定以下任何内容的位置: •图标样式、地面覆盖和屏幕覆盖中的图标使用的图像文件 •元素中使用的模型文件 •网络链接加载的 KML 或 KMZ 文件
指定的文件可以是本地文件,也可以是远程服务器上的文件。在最简单的形式中,网络链接是一种有用的方法,可以在同一台计算机上将一个大型 KML 文件拆分为更小、更易于管理的文件。
到目前为止,我们的所有示例都要求将 KML 代码从本地计算机传送到 Google 地球。网络链接使您能够从远程位置提供内容,并且通常用于将数据分发给大量用户。这样,如果需要修改数据,只需在源位置进行修改,所有用户都会自动收到更新后的数据。
我做了一些更改和测试,发现错误必须在我的 HTML 文件中,而不是在 KML 文件中。如果我单击 HTML 文件,我会得到与运行程序相同的结果。
我认为您运行 HTML 文件并且它应该调用 KML 是否正确?还是我只是调用 KML 来打开 GE?
这是我要运行的示例 HTML。
<!DOCTYPE html>
<html>
<head>
<title>Sample</title>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
var ge;
google.load("earth", "1.x");
function init() {
google.earth.createInstance('map3d', initCB, failureCB);
};
function initCB(instance) {
ge = instance;
ge.getWindow().setVisibility(true);
var href = 'https://dl.dropbox.com/u/61240296/myPoints.Kml';
google.earth.fetchKml(ge, href, kmlFinishedLoading);
};
function kmlFinishedLoading(obj) {
kmlObject = obj;
if (kmlObject) {
if ('getFeatures' in kmlObject) {
kmlObject.getFeatures().appendChild(placemark);
}
ge.getFeatures().appendChild(kmlObject);
if (kmlObject.getAbstractView()) {
ge.getView().setAbstractView(kmlObject.getAbstractView());
}
}
};
function showHideKml() {
kmlObject.setVisibility(!kmlObject.getVisibility());
};
function failureCB(errorCode){};
google.setOnLoadCallback(init);
</script>
</head>
<body>
<div id="map3d" style="height: 320px; width: 679px;">
</div>
</body>
</html>