我已根据位置搜索获得了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);
}
这会将相机对准正确的位置,但该范围目前是硬编码的。我想基于视口的范围,但我不太确定如何。
问题
代码必须存在于某个地方,因为Google Earth桌面应用程序完美地完成了这项工作,但我似乎无法在API中找到它。
答案 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 });
"代码必须存在于某处,因为Google Earth桌面应用 完美地做到这一点"
请注意,仅仅因为某个功能存在于一个功能中,它并不意味着它在另一个功能中可用。实际上,插件中没有可用的完整应用程序中的许多功能。