javascript - 第二次点击清除谷歌地图
问题描述
我正在为我的项目使用谷歌地图。当用户单击地图时,我会显示一个标记。如何通过第二次点击清除地图并显示另一个标记?
function myMap() {
var mapCanvas = document.getElementById("map");
var myCenter = new google.maps.LatLng(32.1788385, 54.5177581);
var mapOptions = {center: myCenter, zoom: 5};
var map = new google.maps.Map(mapCanvas, mapOptions);
google.maps.event.addListener(map, 'click', function (event) {
placeMarker(map, event.latLng);
});
}
function placeMarker(map, location) {
var marker = new google.maps.Marker({
position: location,
map: map
});
}
解决方案
您需要将标记的引用保存在全局变量中。您还需要检查类型marker
或将其包装在try-catch
语句中。
const mapCanvas = document.getElementById("map");
var marker;
function initMap(){
var myCenter = new google.maps.LatLng(32.1788385, 54.5177581);
var mapOptions = {center: myCenter, zoom: 5};
var map = new google.maps.Map(mapCanvas, mapOptions);
google.maps.event.addListener(map, 'click', function (event) {
placeMarker(map, event.latLng);
});
}
function placeMarker(map, location) {
// Remove the previous marker
try {
marker.setMap(null)
} catch (e) {}
// Update the marker
marker = new google.maps.Marker({
position: location,
map: map
});
}
推荐阅读
- windows - 在 Cmdlet 或程序调用中以 - (破折号)开头的转义 Powershell 变量?
- ssis - SSIS Odata 连接成功但未加载集合,SSDT 2017
- amazon-web-services - 从 lambda 触发器返回而不从队列中删除消息
- c# - 如何将不同类型的子元素反序列化为基类型的列表/集合,这是相应类的属性
- r - 在 R 中为植物生成谱系
- multithreading - sqlx.Next 和 sqlx.StructScan 对并发使用安全吗?
- django - 处理冗余的 Django 模型继承
- swift - 我得到无效的文档参考。文档引用在xcode中必须有偶数段错误
- javascript - FrontEnd [ReactJS] 上的数字处理
- c# - 从玩家列表中获取所有可能的 5 人团队组合