Google地球的文档说我应该能够访问我本地驱动器上的文件,但是我找不到一个示例,当我尝试在本地驱动器上使用KML时,它似乎没有加载。我看到很多答案说它无法完成,但为什么文档说不然呢?
我的代码
var href = 'http://code.google.com/'
+ 'D:/visual studio 12/Projects/myMap/myMap/myPoints.Kml';
实施例
网络链接
网络链接包含带有(超文本引用)的元素,用于加载文件。可以是一个 本地文件规范或绝对URL。尽管名字,一个 不一定从网络加载文件。该 在链接中指定以下任何位置:•An 图标样式,地面叠加层和屏幕中的图标使用的图像文件 叠加•元素中使用的模型文件•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>
答案 0 :(得分:1)
你误解了local file specification
的含义。如果您阅读文档,它没有说明“计算机上”的文件,它实际上就是这样说的。
(原文如此)可以是本地文件规范或绝对URL
这意味着文件规范可以是相对的还是绝对的 - 本地意味着相对于托管页面的域本地,不本地计算机本地!
简单来说,想象一下我的网站位于(这将是您的示例HTML)
http://www.somesite.com/
我还有一个kml文件,其中包含一个位于
的网络链接 http://www.somesite.com/kml/foo.kml
最后一些图片位于
http://www.somesite.com/images/
示例HTML中的代码 - 可以使用本地文件规范或绝对URL 来引用文件。
即。它可以使用
本地 google.earth.fetchKml(ge, '/kml/foo.kml', ...
绝对:google.earth.fetchKml(ge, 'http://www.somesite.com/kml/foo.kml', ...
此外,foo.kml
中的网络链接也可以使用本地文件规范或绝对网址来引用图像文件。
即
本地 <href>../images/pic.jpg</href>
绝对:<href>http://www.somesite.com/images/pic.jpg</href>
答案 1 :(得分:0)
您提到了Documentation for Google Earth
但是您已经标记了Google Maps,Google Maps API v3这一问题。 Google地球是一个在本地计算机上运行的应用程序,可以访问本地硬盘,另外两个是基于Web的。
如果您使用的是Google Maps API v3,则处理KML的本机对象为KmlLayer,该对象需要公开,因此Google的服务器可以检索并呈现它以在地图上显示。< / p>