gpt4 book ai didi

javascript - 单击 InfoWindow Typescript Angular2

转载 作者:太空狗 更新时间:2023-10-29 18:04:21 26 4
gpt4 key购买 nike

您好,我已经搜索了好几个小时了,希望您能帮助我 :)

想法

如果您在 Google map 上单击信息窗口,我想显示一个页面。 (使用 Ionic 2 中的 ModalController)

问题

点击不起作用..

var infoWindow = new google.maps.InfoWindow({
content: '<h2 (click)="goToProductPage(product)">Click me</h2>'
});


goToProductPage(product :any){
let modal = this.modalCtrl.create(ProductPage, product);

modal.present();
}

遗憾的是,这不起作用,我还尝试了一个内容节点,使用 onclick="",使用 javascript 函数..

这是另一个 question with the same problem未解决。

最好的问候,路易斯

编辑

setProductMarker(product :any, productLocation :any){

var contentWindow = "<h2 id='clickableItem'>Click me</h2>" + product.productName + "<img src='" + product.imgUrl + "' width='60' height='60' /> <br/>" + product.date

var clickableItem = document.getElementById('clickableItem');

clickableItem.addEventListener('click' , () => {
this.goToProductPage(product);
});

var productMarker = new google.maps.Marker({
position: new google.maps.LatLng(JSON.parse(productLocation).latitude, JSON.parse(productLocation).longitude),
map: this.map,
title:"Product"
})


var infoWindow = new google.maps.InfoWindow({
content: contentWindow
});

infoWindow.addListener('click', () => {
alert("yeah");
console.log("yeah");
});


productMarker.addListener('click', event => {
infoWindow.open(this.map, productMarker);
this.productNow = product;
});

}

最佳答案

解决方案

感谢Daniel Cooke的帮助与

var clickableItem = document.getElementById('clickableItem');
clickableItem.addEventListener('click' , () => this.goToProductPage())

-> 问题是我的 InfoWindow 内容还没有准备好进行 DOM 操作。


因此,我添加了一个 domready 监听器,这要归功于 question .

google.maps.event.addListener(infoWindow, 'domready', function() {
// your code
});

这里是完整的源代码:

setProductMarker(product :any, productLocation :any){
var contentWindow = product.productName + "<h2 id='clickableItem'>Click me</h2><img src='" + product.imgUrl + "' width='60' height='60' /> <br/>" + product.date;


var productMarker = new google.maps.Marker({
position: new google.maps.LatLng(JSON.parse(productLocation).latitude, JSON.parse(productLocation).longitude),
map: this.map,
title:"Product"
})


var infoWindow = new google.maps.InfoWindow({
content: contentWindow
});

google.maps.event.addListener(infoWindow, 'domready', () => {
//now my elements are ready for dom manipulation
var clickableItem = document.getElementById('clickableItem');
clickableItem.addEventListener('click', () => {
this.goToProductPage(product);
});
});

productMarker.addListener('click', event => {
infoWindow.open(this.map, productMarker);
this.productNow = product;
});

}

再次感谢丹尼尔的耐心等待! :)

关于javascript - 单击 InfoWindow Typescript Angular2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43321635/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com