2013-01-14 43 views
1

是否存在将Google地球定位到指定位置的KML标记序列?KML是否支持搜索功能

如果我启动Google地球,请在搜索文本框中输入“Houston”,然后按[搜索],地图将定位到德克萨斯州的休斯敦。

您可以通过KML来实现吗?

如果不是,你会如何去做这件事?我正在尝试从C#应用程序执行此操作。

谢谢!

回答

1

大多数基本的KML文件看起来是这样的:

<?xml version="1.0" encoding="UTF-8"?> 
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom"> 
<Document> 
    <name>Name of KML</name> 
    <StyleMap> 
    ......... 
    </StyleMap> 
    <Folder> 
    ...... 
    </Folder> 
</Document> 

如果分配<LookAt><Camera><Document>节点,每当KML加载它应该加载这一观点 - 除非特别指出(例如,通过API/COM)

所以你的KML应该是这样的:

<?xml version="1.0" encoding="UTF-8"?> 
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom"> 
<Document> 
    <name>Name of KML</name> 
    <LookAt> 
    .......... 
    </LookAt> 
    <StyleMap> 
    ......... 
    </StyleMap> 
    <Folder> 
    ...... 
    </Folder> 
</Document> 
0

我假设你正试图在KML文件中的许多单一点/特征中居中?

有(据我所知)没有办法通过KML定义初始地图设置。也就是说,Google Earth 5.0支持Tours,使用FlyTo元素可以实现以位置为中心的这一目标,但我不相信无论如何自动播放没有JavaScript或插件的播放列表(您的要求这在KML中似乎是否定的)。

我知道Google Maps API会自动对已加载的KML文件进行自动对中和缩放(任何人都可以对Google地球做相同的评论吗?)。我还没有尝试,但我很好奇,如果有方法利用这种行为使用文件夹。如果(和一个大当):

  1. 谷歌地球集中在一个加载的KML文件/缩放和
  2. 谷歌地球做到这一点的唯一的数据在第一个或最后一个文件夹

(无论我知道这是真的)

你可以尝试把你的搜索点放在一个文件夹中,看看地图是否跟踪到它。

我很抱歉,此回复的整个第二部分是疯狂的猜测,但我现在无法测试它,并认为它可能值得一试。如果我在赌它,我的答案就是仅靠KML无法实现。测试上面的黑客相当容易,如果你没有机会,我今晚应该有时间尝试一下,并发布一个附录。

+0

我正在开发一个.NET Windows窗体应用程序在C#中,和我实际上,我们试图做的是允许用户在搜索框中输入位置,然后以某种方式将其传递给GoogleEarth。我引用了EARTHLib,并且实例化了包含只读SearchController引用的ApplicationGE对象,但是,如果我检索SearchController引用并尝试通过Search()方法使用它,则会引发COM错误。 – John

+0

我猜测我的GE(v7)版本不赞成使用此功能,因为谷歌已经明显地努力摆脱COM API。 我希望我可以使用KML。我试图通过.NET WebBrowser对象获取并使用GoogleEarth浏览器插件。这是非常奇怪的,IMO,为什么这是“首选”的API对我来说没有多大意义,但除了意见外,我还没有能够获得该API的工作。我的目的可能是心理上的脱节。无论如何,底线是我似乎无法将Google地球嵌入到框架中,并调用任何类型的搜索功能。 – John

+0

另一种方法是允许GoogleEarth作为单独的应用程序自行启动,并让用户通过GE的侧面板进行搜索。这工作正常,但它分布在两个单独的形式,我试图避免的UI。 希望这是有道理的... – John