【发布时间】:2018-12-27 04:54:42
【问题描述】:
我正在尝试在谷歌地图的信息窗口中进行点击。我无法使用以下代码实现。谁能告诉我哪里做错了?
loadmap(){
var locations = [];var map;
for(var i=0;i<this.data.length; i++){
locations.push({
'location_name':this.data[i].location_name,
});
}
var marker; var icon;
map = new google.maps.Map(document.getElementById('map'), {
zoom: 2,
center: new google.maps.LatLng(40.4637, 3.7492),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
map.markers = [];
var infowindow = new google.maps.InfoWindow({
enableEventPropagation: true
});
for (var i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng('lat', 'lng'),
map: map,
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(
'<span>'+locations[i].location_name+'</span><br/>'+
'<input type="button" id="infowindow_submit" name="submit" value ="submit"/>'
);
infowindow.open(map, marker);
};
})(marker, i));
google.maps.event.addListener(infowindow, 'domready', function() {
$("#infowindow_submit").submit(function() {
console.log("hi!");
});
});
}
}
【问题讨论】:
-
大部分看起来并不像 Angular 代码...
infowindow定义在哪里?您是否正在为仅使用纯 JS 事件处理程序发生任何事情而苦苦挣扎,或者难以将其集成到 Angular 中。我想可能有谷歌地图 npm 包可以更好地与 Angular 集成,尽管我没有看过。您是否收到任何控制台错误?你能在点击处理程序中放置一个断点或console.log,看看该代码是否正在执行? -
我正在使用纯 JS 代码在我的 Angular 项目中显示地图。我在控制台中没有收到任何错误,当我单击 infoWindow 中的按钮时也没有发生任何事情。正在执行标记的单击处理程序,但不是 infowindow domready 部分。那部分也没有被调试
-
我认为您的问题可能是
infowindow未定义。你还有代码吗? stackoverflow.com/questions/5416160/… 中的答案似乎创建了一个名为 that 的变量。 -
@ScottyWaggoner 我已经更新了我的代码...定义了 infoWindow 但问题仍然存在
标签: javascript jquery google-maps google-maps-api-3 infowindow