我在我的 vue 应用程序中使用http://www.webgearth.org/api作为地球仪。我有一条名为地球的路线,它用新的 WE.map 初始化地球。当我更改路线并返回时,它会重新初始化,但会在我的脑海中重新添加脚本,这些脚本会阻塞地球图块的加载。有没有办法保留和重新使用实例化的对象?或任何可以帮助解决此问题的提示
我尝试将创建的地球仪保存在商店中并重新使用它,尽管它不会在不执行 WE.map 的情况下重新加载,并且该方法会添加标题
这个方法在 vue create 上被调用
initialize(data) {
var earth = WE.map("earth_div");
WE.tileLayer(
"https://webglearth.github.io/webglearth2-offline/{z}/{x}/{y}.jpg",
{
tileSize: 256,
bounds: [[-85, -180], [85, 180]],
minZoom: 0,
maxZoom: 16,
attribution: "WebGLEarth example",
tms: true
}
).addTo(earth);
data.forEach(doc => {
let latlng = [];
console.log(typeof doc.data().images);
console.log(doc.data().galleryTitle);
latlng[0] = doc.data().lat;
latlng[1] = doc.data().lng;
console.log(latlng);
var marker = WE.marker(latlng).addTo(earth);
marker.element.id = doc.data().safeTitle;
let popup = `${doc.data().location}`;
marker
.bindPopup(popup, { maxWidth: 150, closeButton: true })
.openPopup();
marker.element.onclick = e => {
console.log(e.target.parentElement.id);
var gallery = e.target.parentElement.id;
this.$router.push({ path: "/gallery/" + gallery });
};
});
// Start a simple rotation animation
var before = null;
requestAnimationFrame(function animate(now) {
console.log('animating')
var c = earth.getPosition();
var elapsed = before ? now - before : 0;
before = now;
earth.setCenter([c[0], c[1] + 0.1 * (elapsed / 30)]);
// requestAnimationFrame(animate);
});
earth.setView([46.8011, 8.2266], 3);
this.$store.commit('setEarth',earth)
},
我希望地球在不重新添加标题的情况下重新启动。