Click on InfoWindow Typescript Angular2(单击 InfoWindow Typescript Angular2)
问题描述
我已经搜索了好几个小时,希望你能帮助我:)
Hi I have searched since many hours, I hope you can help me :)
如果您单击谷歌地图上的信息窗口,我想显示一个页面.(使用 Ionic 2 中的 ModalController)
I want to display a Page if you click on an InfoWindow on google Maps. (Using a ModalController from Ionic 2)
点击不起作用..
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 函数..
Sadly this doesn't work, I tried also with a content node, with onclick=""
, with javascript functions..
这是另一个未解决的问题.
最好的问候,路易斯
setProductMarker(product :any, productLocation :any){
var contentWindow = "<h2 id='clickableItem'>Click me</h2>" + product.productName + "<img src="IiArIHByb2R1Y3QuaW1nVXJsICsg"' 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;
});
}
推荐答案
解决方案
感谢丹尼尔库克和
var clickableItem = document.getElementById('clickableItem');
clickableItem.addEventListener('click' , () => this.goToProductPage())
-> 问题是我的 InfoWindow 内容还没有准备好进行 DOM 操作.
-> The problem was my InfoWindow content wasn't ready for the DOM manipulation.
因此,感谢这个 domready 侦听器-api-infowindow">问题.
So, I added a domready
listener thanks to this 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="IiArIHByb2R1Y3QuaW1nVXJsICsg"' 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;
});
}
再次感谢丹尼尔的耐心等待!:)
Thank you again Daniel for your patience ! :)
这篇关于单击 InfoWindow Typescript Angular2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:单击 InfoWindow Typescript Angular2


- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- addEventListener 在 IE 11 中不起作用 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- Flexslider 箭头未正确显示 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01