我已经基于位置搜索获得了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/