将功能结果传递给属性

时间:2016-09-04 20:23:14

标签: angular google-maps google-maps-api-3 ionic2

我正在使用Google Maps SDK构建一个Ionic 2应用程序。

我希望用户能够在地图上添加标记。

我通过按钮点击添加标记的代码如下所示:

addMarker(){

    let marker = new google.maps.Marker({
        map: this.map,
        animation: google.maps.Animation.DROP,
        position: this.map.getCenter()
    });

    let content = "<h4>Information!</h4>";          

    this.addInfoWindow(marker, content);

}

位置:this.map.getCenter()使Pin始终添加到地图的中心。

以下函数应返回地图上单击位置的纬度/经度:

addNewPlace(){
  let newPlace = new google.maps.event.addListener(this.map, 'click', (event) => latLng);
}

我希望将上面的结果( latLng )插入到 addMarker 函数中:

addMarker(){

    let marker = new google.maps.Marker({
        map: this.map,
        animation: google.maps.Animation.DROP,
        position: newPlace
    });

    let content = "<h4>Information!</h4>";          

    this.addInfoWindow(marker, content);

}

我该怎么做? 现在浏览器只是忽略我的addNewPlace函数(没有任何反应,控制台没有错误)。

1 个答案:

答案 0 :(得分:2)

您可以在创建地图的初始化函数中为地图添加单击侦听器。无需创建addNewPlace()函数。另请注意,google.maps.event.addListener()没有构造函数。不需要新的操作员。

https://developers.google.com/maps/documentation/javascript/reference#event

click事件的回调函数返回MouseEvent对象

https://developers.google.com/maps/documentation/javascript/reference#MouseEvent

所以你可以创建一个函数

addMarker(newPlace) {

    let marker = new google.maps.Marker({
        map: this.map,
        animation: google.maps.Animation.DROP,
        position: newPlace
    });

    let content = "<h4>Information!</h4>";          

    this.addInfoWindow(marker, content);
}

在地图创建后的初始化函数中添加

google.maps.event.addListener(this.map, 'click', (event) => {
    addMarker(event.latLng);
});