不是直接不,但是修改链接以调用支持您所需行为的自定义函数很容易。
此外,如果您通过 kml 加载功能而不是以编程方式创建它们,那么您需要提供 kmlFeature 的完整路径- 而不仅仅是它的 ID。IE
http://somesite.com/my.kml#Location1
而不仅仅是#Location1
-http://somesite.com/my.kml
定义具有 id 的功能的文件在哪里Location1
。
如果您有类似以下 javascript 方法的内容,它应该可以按预期工作。也就是说,它将飞到视图并打开一个功能气球。(这是假设ge
您的应用程序中的谷歌地球插件,并且地标已定义抽象视图)。
// Attempts to find and element by ID,
// fly to its abstract view and open a feature balloon for it.
var flyto = function(id) {
var placemark = ge.getElementByUrl(id);
if(!placemark) {
return false;
}
if (placemark.getAbstractView()) {
ge.getView().setAbstractView(placemark.getAbstractView());
}
var content = placemark.getBalloonHtmlUnsafe(); // or getDescription()
var balloon = ge.createHtmlStringBalloon('');
balloon.setFeature(placemark);
balloon.setContentString(content);
ge.setBalloon(balloon);
return false;
};
然后,您可以简单地修改链接以调用flyto
传递所需 id 的函数。例如
<a href="javascript:flyto('http://somesite.com/my.kml#Location1');">Location 1</a>
如果您的地标没有抽象视图,那么您必须执行一些操作,例如提取点几何图形,然后创建一个lookat
或camera
使用纬度和经度数据来设置视图。
编辑
我认为这个功能真的很酷,所以我整理了一个根本不需要对链接进行任何特殊标记的示例。单击包含命令的 kml 链接时,插件的行为就像完整的 Google 地球客户端一样。
这是一个 完整的工作示例。