使用 setInterval 使用 JavaScript class 模拟 Google 地图标记放置
Simulate Google Maps Markers placement with a JavaScript class using setInterval
我想通过以下描述在JavaScript中创建一个class。
此 class 是使用 Google 地图模拟卡车在路线上移动的一部分。我想要的是在 class 方法中使用 setInterval 就好像它是一个函数一样,以便能够在使用不同参数重复实例化对象后模拟许多标记。
class RouteMarker {
constructor(marker,pointsArray,i) {
this.marker = marker;
this.pointsArray = pointsArray;
this.i=i;
}
main() {
var myVar = setInterval(function(){this.myTimer}, 7000);
}
myTimer() {
alert('o');
this.setPostionM(this.i);
this.i++;
}
setPostionM(key) {
this.marker.setPosition(this.pointsArray[key]);
}
}
你的代码就在那里。
快速运行向下:
- 修复了代码中的一些小问题,主要是格式化
- 确保当
.myTimer()
函数 运行 遍历所有点时,它将自行停止 (this._intervalId
)。
- 为了快速演示,将
7000
毫秒间隔缩短为 1000
.myTimer()
函数将使用当前索引 (this.i
) 调用 alert()
- 创建了一个模拟程序 class
MockMarker
,这只是 Google 地图 API 的一个简单的工作占位符,因此您可以 运行 示例代码这里。
MockMarker
注销当前给定位置
class RouteMarker {
constructor(marker, pointsArray, i) {
this.marker = marker;
this.pointsArray = pointsArray;
this.i = i;
}
main() {
this._intervalId = setInterval(this.myTimer.bind(this), 1000);
}
myTimer() {
alert('index: ' + this.i);
this.setPostionM(this.i);
this.i++;
if (this.i >= this.pointsArray.length ) {
console.log('stop myTimer');
clearInterval(this._intervalId);
}
}
setPostionM(key) {
this.marker.setPosition(this.pointsArray[key]);
}
}
class MockMarker {
setPosition(array) {
console.log('position: ' + array);
}
}
const mockMarker = new MockMarker();
const routeMarker = new RouteMarker(mockMarker, [[10.21, 70.13], [14.62, 56.71], [22.34, 67.26]], 0);
routeMarker.main();
我想通过以下描述在JavaScript中创建一个class。
此 class 是使用 Google 地图模拟卡车在路线上移动的一部分。我想要的是在 class 方法中使用 setInterval 就好像它是一个函数一样,以便能够在使用不同参数重复实例化对象后模拟许多标记。
class RouteMarker {
constructor(marker,pointsArray,i) {
this.marker = marker;
this.pointsArray = pointsArray;
this.i=i;
}
main() {
var myVar = setInterval(function(){this.myTimer}, 7000);
}
myTimer() {
alert('o');
this.setPostionM(this.i);
this.i++;
}
setPostionM(key) {
this.marker.setPosition(this.pointsArray[key]);
}
}
你的代码就在那里。
快速运行向下:
- 修复了代码中的一些小问题,主要是格式化
- 确保当
.myTimer()
函数 运行 遍历所有点时,它将自行停止 (this._intervalId
)。 - 为了快速演示,将
7000
毫秒间隔缩短为1000
.myTimer()
函数将使用当前索引 (this.i
) 调用 - 创建了一个模拟程序 class
MockMarker
,这只是 Google 地图 API 的一个简单的工作占位符,因此您可以 运行 示例代码这里。 MockMarker
注销当前给定位置
alert()
class RouteMarker {
constructor(marker, pointsArray, i) {
this.marker = marker;
this.pointsArray = pointsArray;
this.i = i;
}
main() {
this._intervalId = setInterval(this.myTimer.bind(this), 1000);
}
myTimer() {
alert('index: ' + this.i);
this.setPostionM(this.i);
this.i++;
if (this.i >= this.pointsArray.length ) {
console.log('stop myTimer');
clearInterval(this._intervalId);
}
}
setPostionM(key) {
this.marker.setPosition(this.pointsArray[key]);
}
}
class MockMarker {
setPosition(array) {
console.log('position: ' + array);
}
}
const mockMarker = new MockMarker();
const routeMarker = new RouteMarker(mockMarker, [[10.21, 70.13], [14.62, 56.71], [22.34, 67.26]], 0);
routeMarker.main();