【发布时间】:2012-10-10 06:29:51
【问题描述】:
Google 地球的文档说我应该能够访问本地驱动器上的文件,但我找不到示例,当我尝试在本地驱动器上使用 KML 时,它似乎没有加载。我看到很多答案都说无法完成,但是为什么文档中另有说明呢?
我的代码
var href = 'http://code.google.com/'
+ 'D:/visual studio 12/Projects/myMap/myMap/myPoints.Kml';
例子
网络链接
网络链接包含一个带有(超文本引用)加载文件的元素。可以是一个 本地文件规范或绝对 URL。尽管有这个名字,一个 不一定从网络加载文件。这 在链接中指定以下任何内容的位置: •An 图标样式、地面覆盖层和屏幕中的图标使用的图像文件 覆盖 •元素中使用的模型文件 •KML 或 KMZ 由网络链接加载的文件
指定的文件可以是本地文件,也可以是远程文件 服务器。在最简单的形式中,网络链接是一种有用的方式 在 同一台电脑。
到目前为止,我们所有的示例都要求 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>
【问题讨论】:
-
您完全误解了
local file specification的含义,这并不意味着您机器上的本地文件 - 它意味着域上的相对路径。请参阅我的答案以获得更全面的解释。
标签: kml google-earth google-earth-plugin