Google Maps侦听器无法在angular2 + typescript中正常工作

斯图比

我用html + js + jquery编写了一个小型网站,并使用了Google Maps api v3。在地图上,您可以绘制一条折线,这可能是由于地图上的事件处理程序所致,例如

 map.addListener('click', addLatLng);

function addLatLng(event) {
    // Add a new marker at the new plotted point on the polyline.
    polyline.getPath().push(event.latLng);

    var marker = new google.maps.Marker({
        position: event.latLng,
        draggable: true,
        map: map,
        icon: {
          path: google.maps.SymbolPath.CIRCLE,
          scale: 5
        }
    })

    var i = gmarkers.length;
    marker.addListener('drag', function() {
      polyline.getPath().setAt(i, marker.getPosition());
    });
 ...
}

现在,我想将此页面转换为angular2组件。我知道事件处理可能不应该以这种方式完成,但是我不知道如何否则...

我可以将第一行更改为

this.map.addListener('click', (event) => this.addLatLng(event));

这将按预期工作。但 (!)

addLatLng(event) {
    // Add a new marker at the new plotted point on the polyline.
    this.polyline.getPath().push(event.latLng);

    var marker = new google.maps.Marker({
        position: event.latLng,
        draggable: true,
        map: this.map,
        icon: {
          path: google.maps.SymbolPath.CIRCLE,
          scale: 5
        }
    })


    var i = this.gmarkers.length;

    marker.addListener('drag', () => function() {
     // this.polyline.getPath().setAt(i, marker.getPosition());
      console.log("drag listening");

    });
  ...
}

将无法正常工作。我不明白为什么可以将事件侦听器添加到地图上,但不能添加到该地图上的标记上。是否因为新的侦听器已添加到另一个元素的事件处理中?但是,如果是这样,为什么它只能在纯Javascript中运行?

毁灭

您搞砸了:

marker.addListener('click', () => function() {
    // this.polyline.getPath().setAt(i, marker.getPosition());
    console.log("drag listening");
});

应该是这样的:

marker.addListener('drag', () => {
    // this.polyline.getPath().setAt(i, marker.getPosition());
    console.log("drag listening");
});

这个构造

() => {}

是箭头功能。如果没有{},它将在之后返回值=>

因此,您创建了一个返回函数的函数。

此处提供更多信息:https : //basarat.gitbooks.io/typescript/content/docs/arrow-functions.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Google Maps侦听器无法在angular2 + typescript中正常工作

来自分类Dev

Box2d联系人侦听器无法在presolve中正常工作

来自分类Dev

用于检测图像的“加载”事件侦听器已完成加载,无法在反应中正常工作

来自分类Dev

关键侦听器无法正常工作

来自分类Dev

无法在Rails中正常工作

来自分类Dev

Google Maps事件侦听器方位

来自分类Dev

Google Maps LatLngbounds无法正常工作

来自分类Dev

Google Maps API标记无法正常工作

来自分类Dev

无法使Google Maps Geocode正常工作

来自分类Dev

Google Maps V2无法正常工作

来自分类Dev

Google Earth无法正常工作

来自分类Dev

无法使Google教程正常工作

来自分类Dev

Google字体无法正常工作

来自分类Dev

Google日历无法正常工作

来自分类Dev

Google Earth无法正常工作

来自分类Dev

使用jQuery无法在Firefox中正常工作

来自分类Dev

strcmp无法在PHP中正常工作

来自分类Dev

无法使jQuery在Wordpress中正常工作

来自分类Dev

SKTransition crossFadeWithDuration无法在Swift中正常工作

来自分类Dev

数学无法在PHP中正常工作?

来自分类Dev

ngHide无法在ngRepeater中正常工作

来自分类Dev

BST插入无法在Python中正常工作

来自分类Dev

GridView验证无法在JavaScript中正常工作

来自分类Dev

Javascript代码无法在Rails中正常工作

来自分类Dev

让微调器在Grails中正常工作

来自分类Dev

单击信息窗口的Google侦听器Google Maps V2

来自分类Dev

绑定侦听器在JavaFX 8中无法正常工作

来自分类Dev

邀请侦听器无法正常工作4.2

来自分类Dev

回调侦听器无法正常工作