Javascript 如何加载放大的谷歌地球地图,而不是从太空开始?
当从我的网站加载Google Earth API时,我有一个设置视图,但它从空间开始,然后放大,而不是从这个放大视图开始。这对于观者来说是不可靠的,尤其是因为我的视角是从北向南看的,所以地球在进入的过程中会旋转: 贴图将加载到iframe中。我想在不改变缩放视图的情况下在不同的KML之间切换,但是我会单独发布这个问题。我四处寻找答案,但没有找到任何具体的答案——如果我错过了一篇关于这个的帖子,我很乐意去看看是否有人能给我指出正确的方向 代码如下:Javascript 如何加载放大的谷歌地球地图,而不是从太空开始?,javascript,geospatial,google-earth-plugin,Javascript,Geospatial,Google Earth Plugin,当从我的网站加载Google Earth API时,我有一个设置视图,但它从空间开始,然后放大,而不是从这个放大视图开始。这对于观者来说是不可靠的,尤其是因为我的视角是从北向南看的,所以地球在进入的过程中会旋转: 贴图将加载到iframe中。我想在不改变缩放视图的情况下在不同的KML之间切换,但是我会单独发布这个问题。我四处寻找答案,但没有找到任何具体的答案——如果我错过了一篇关于这个的帖子,我很乐意去看看是否有人能给我指出正确的方向 代码如下: var ge; google.lo
var ge;
google.load("earth", "1");
function init() {
google.earth.createInstance('map3d', initCB, failureCB);
}
function initCB(instance) {
ge = instance;
ge.getWindow().setVisibility(true);
// set navigation controls
ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO);
// to fetch a KML file and show it
function finished(object) {
if (!object) {
// wrap alerts in API callbacks and event handlers
// in a setTimeout to prevent deadlock in some browsers
setTimeout(function() {
alert('Bad or null KML.');
}, 0);
return;
}
ge.getFeatures().appendChild(object);
var la = ge.createLookAt('');
la.set(-1.251336, -78.443817, 7000, ge.ALTITUDE_RELATIVE_TO_GROUND,
177, 65, 500);
ge.getView().setAbstractView(la);
}
//var marker = new GMarker(new GLatLng(-1.402002,-78.409471)); // latitude, longitude
// map.addOverlay(marker);
function failureCB(errorCode) {
}
google.setOnLoadCallback(init);
谢谢 在加载抽象视图之前,您可以选择SPEED\u TELEPORT
此设置将使地球仪瞬间飞到所需位置,而不是“俯冲”。如果需要恢复常规移动,则在获得初始视图后,可以将速度设置回默认设置
例如,可以使用以下功能即时飞到所需位置。
该方法接受any,即a或作为其单个参数
// fly-to a view using SPEED_TELEPORT
function teleport(abstractView) {
var oldSpeed = ge.getOptions().getFlyToSpeed(); .
ge.getOptions().setFlyToSpeed(ge.SPEED_TELEPORT);
ge.getView().setAbstractView(abstractView); // Wooosh!
ge.getOptions().setFlyToSpeed(oldSpeed);
}
除此之外,为了确保初始位置根本不显示过渡,您可以在将GEWindow
可见性设置为True之前移动远程端口。比如说
function initCB(instance) {
ge = instance;
var la = ge.createLookAt('');
la.set(-1.251336, -78.443817, 7000, ge.ALTITUDE_RELATIVE_TO_GROUND, 177, 65, 500);
teleport(la); // set the position
ge.getWindow().setVisibility(true); // now display the window
//etc..
这是非常有用的。还有一个小问题:插件在到达正确的视角之前,会从太空短暂地显示地球。有没有办法避免这种情况?更新:我临时想出了一个办法。通过使用
ge.getWindow().setVisibility(false)启动init回调函数代码>并放置ge.getWindow().setVisibility(true)代码>调用setAbstractView后,它避免从太空显示地球,即使是短暂的。这是正确的,您可以在使插件窗口可见之前设置位置。