如何在函数onClick中转换值

How can I transform values inside a function onClick?

本文关键字:转换 onClick 函数      更新时间:2023-09-26

基本上,我已经导入了一个WebGL地球仪,并希望在单击地球仪时使其停止旋转。

以下是我试图让它停止的尝试:

    setInterval(function() {
        var c = earth.getPosition();
        earth.setCenter([c[0], c[1] + 0.9]);
        earth.onclick.setCenter({c[0], c[1]);
    }, 50);

基本上,我想摆脱+0.9 onClick。如果有帮助,还可以添加下面地球物体的功能:

<script src="http://www.webglearth.com/v2/api.js"></script>
<script>
function initialize() {
    var options = {atmosphere: true, center: [0, 0], zoom: 0};
    var earth = new WE.map('earth_div', options);
    WE.tileLayer('http://otile{s}.mqcdn.com/tiles/1.0.0/sat/{z}/{x}/{y}.jpg', {
        subdomains: '1234',
        attribution: 'Tiles Courtesy of MapQuest'
    }).addTo(earth);
</script>

我猜.onclick的语法不正确。它应该是什么?

检查webglearth上的示例,onClick被定义为:

earth.on('click', callback)

因此,您需要将回调函数定义为:

callback = function(){···}

简而言之:

earth.on('click', function(e){···});

如果需要停止动画,则必须在onClick事件上使用clearInterval

var interval = setInterval(function() {
    var c = earth.getPosition();
    earth.setCenter([c[0], c[1] + 0.9]);
}, 50);
···
earth.on('click', function(){
    clearInterval(interval);
});

根据http://www.webglearth.org/api,应该是earth.on('click', yourCallback());,而不是.onclick。此外,我会考虑对您的代码进行一些更改:

首先,不要一直在setatimeout函数中设置onclick处理程序。在初始化时执行一次,并在超时内使用一个变量,而不是0.9,您可以在onclick回调中将其设置为0。如果你想永远停止动画,你可以考虑跳出setTimeout循环,以防你偶然发现变量为0。

我将把实现留给你