You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 6中使用Google Maps API v3点击地图无法显示Marker问题

问题原因及解决方案

你的Marker无法显示的核心问题是JavaScript的this上下文绑定错误,还有一处语法错误,具体分析和修复如下:

1. 上下文绑定错误

在initMap方法中,你使用普通function作为addListener的回调函数:

google.maps.event.addListener(this.map, 'click', function(event) {
  this.placeNewMarker(event.latLng);
});

这里的this指向的是google.maps.Map实例,而不是你的Angular组件实例。当调用this.placeNewMarker时,方法内部的this.map并不是你初始化的组件级map对象,导致创建的Marker无法关联到正确的地图上。

修复方案:改用箭头函数,箭头函数会继承外层上下文的this(即组件实例):

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

2. 语法错误

你的placeNewMarker方法末尾多了一个多余的});,这会导致代码执行报错,直接阻止Marker的创建:

// 错误的代码
placeNewMarker(location) {
  var marker = new google.maps.Marker({
    position: location,
    map: this.map
  });
}); // 这里多余了

修复方案:去掉多余的闭合符号,修正后的方法:

placeNewMarker(location) {
  var marker = new google.maps.Marker({
    position: location,
    map: this.map
  });
}

额外检查点

如果修复后还是看不到Marker,可以排查以下几点:

  • 确认Google Maps JavaScript API已正确加载,浏览器控制台没有加载失败的报错
  • 检查地图容器#map是否设置了明确的宽高样式(比如width: 100%; height: 400px;),避免地图容器不可见导致Marker也无法显示
  • 若使用自定义Marker图标,确保图标路径正确且可访问(默认图标无需额外设置,会显示Google Maps的默认红点)

内容的提问来源于stack exchange,提问作者user2912589

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:26:54