我已经基于位置搜索获得了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中找到它。

最佳答案

如果要将Viewport(LatLngBounds)转换为可以在Google Earth插件中显示的内容,我建议使用GEarthExtensions Library

使用它,您可以基于视口创建一个bounds对象,然后将其设置为当前视图。例如

// 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桌面应用
  做到完美”


仅需注意,仅因为一种功能存在于其中,并不意味着它在另一种功能中可用。确实,完整应用程序中有许多插件无法使用的功能。

关于javascript - 使用Google Earth API飞到PlaceResult,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21057769/

10-11 12:33