如何将Google Maps标记转化为简单的URL链接?
问题出现的原因是,由于点击标记是一个JavaScript事件,所以只能使用location.href/window.open函数来实现标记的链接功能。如果想要使用标准的HTML链接,最好的选择是在用户点击标记时打开一个信息窗口,并将信息窗口的内容设置为HTML链接。
解决方法如下:
1. 创建一个Google Maps标记并将其添加到地图上。
var marker = new google.maps.Marker({ position: myLatLng, map: map, title: 'My Marker' });
2. 创建一个信息窗口,并将其内容设置为HTML链接。
var infowindow = new google.maps.InfoWindow({ content: 'Click here' });
3. 当用户点击标记时,打开信息窗口。
marker.addListener('click', function() { infowindow.open(map, marker); });
通过以上步骤,当用户点击标记时,将会打开一个包含HTML链接的信息窗口。用户可以点击链接以访问指定的网页。
问题的出现原因是希望将Google Maps的标记(marker)转换为简单的URL链接,但是默认情况下Google Maps的标记并不支持直接转换为URL链接。
该问题的解决方法如下:
1. 将Google Map的div元素用链接包裹起来,并设置链接的href属性为"#"
2. 设置标记的鼠标悬停和鼠标移出事件,通过更新链接的href属性来实现(鼠标悬停时将链接设置为对应标记的页面,鼠标移出时将链接重新设置为"#")
marker.addListener('mouseover', function() { link.href = marker.url; // 设置链接为对应标记的页面 }); marker.addListener('mouseout', function() { link.href = "#"; // 设置链接为"#" });
通过这种方法,无论是中键点击、Ctrl+点击还是普通左键点击,都能达到预期的经典行为,并且开销非常有限。
需要注意的是,该解决方案适用于全屏地图,因为点击链接的“#”不会产生任何效果。如果想在一个高度超过一页的页面上使用这个解决方案,还需要为链接添加点击事件监听器,当链接的href属性设置为“#”时,阻止事件传播。
link.addEventListener('click', function(event) { if (link.href === "#") { event.stopPropagation(); // 阻止事件传播 } });
通过以上方法,可以将Google Maps的标记转换为简单的URL链接,实现预期的功能。