使用Google Earth API飞到PlaceResult

时间:2014-01-11 02:17:25

标签: javascript google-maps google-maps-api-3 google-earth google-earth-plugin

我已根据位置搜索获得了PlaceResult个对象,现在我想飞到该位置的推荐Viewport

这是我到目前为止所做的:

function flyToLocation() {
    var place = autocomplete.getPlace();
    var geometry = place.geometry;
    var location = geometry.location;
    var viewport = geometry.viewport; // {fa: {b: 70, d: 40}, la: {b: 27, d: 179}}
    var lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);
    lookAt.setLatitude(location.b);
    lookAt.setLongitude(location.d);
    lookAt.setTilt(lookAt.getTilt() + 15.0);
    lookAt.setRange(500); // todo base this off of viewport
    ge.getView().setAbstractView(lookAt);
    ge.getOptions().setFlyToSpeed(ge.SPEED_TELEPORT);
}

这会将相机对准正确的位置,但该范围目前是硬编码的。我想基于视口的范围,但我不太确定如何。

问题

  • 如何设置范围以便PlaceResult的视口适合 在用户的视口中?
  • 或者有更简单的方法吗?

代码必须存在于某个地方,因为Google Earth桌面应用程序完美地完成了这项工作,但我似乎无法在API中找到它。

1 个答案:

答案 0 :(得分:1)

如果您想将Viewport(LatLngBounds)翻译为可以在Google地球插件中显示的内容,我建议使用GEarthExtensions Library

使用它,您可以基于视口创建边界对象,然后将其设置为当前视图。 e.g。

// the viewport is simply the SouthWest and NorthEast points.
var viewport = geometry.viewport;

// create a geo.bounds based on the viewport 
var bounds = new geo.Bounds(viewport.getSouthWest(), viewport.getNorthEast());

// set the bounds (viewport) to the GEPlugin view
gex.view.setToBoundsView(bounds, { aspectRatio: 1.0 });

这是fully working example

  

"代码必须存在于某处,因为Google Earth桌面应用   完美地做到这一点"

请注意,仅仅因为某个功能存在于一个功能中,它并不意味着它在另一个功能中可用。实际上,插件中没有可用的完整应用程序中的许多功能。