如何通过Google Maps API更新标记文本为HTML元素值?
如何更新Google Maps API标记的文本内容
嘿,我来帮你搞定这个问题~首先得明确一点:Google Maps的Marker对象本身并没有直接的text属性,我们通常通过两种方式给标记添加文本,对应的更新方法也不一样,下面给你详细拆解:
方式一:用InfoWindow(点击标记弹出的文本框)
如果你的需求是点击标记后弹出的文本框内容跟着输入框变化,那可以这么做:
- 初始化地图时创建一个InfoWindow实例,和标记绑定
- 在输入框的
keyup事件里直接更新InfoWindow的内容,还能选择自动弹出窗口
完整代码示例:
var map, marker, infoWindow; var input = document.getElementById('inputField'); input.onkeyup = function() { // 更新InfoWindow的内容为输入框的值 infoWindow.setContent(input.value); // 想要实时显示的话,直接调用open方法绑定到标记上 infoWindow.open(map, marker); } function myMap() { var lat = 59.614503; var lng = 16.546082; // 补全了你没写完的经度值 var mapOptions = { center: new google.maps.LatLng(lat, lng), zoom: 12 }; map = new google.maps.Map(document.getElementById('map'), mapOptions); // 创建地图标记 marker = new google.maps.Marker({ position: new google.maps.LatLng(lat, lng), map: map }); // 创建InfoWindow实例,初始内容为空 infoWindow = new google.maps.InfoWindow({ content: '' }); // 可选:点击标记时默认弹出窗口 marker.addListener('click', function() { infoWindow.open(map, marker); }); }
方式二:用MarkerLabel(标记旁直接显示的文本)
要是你想让文本直接显示在标记旁边(不用点击),那可以用Marker的label属性,更新时通过setOptions方法修改即可:
完整代码示例:
var map, marker; var input = document.getElementById('inputField'); input.onkeyup = function() { // 直接更新标记的label文本,还能自定义样式 marker.setOptions({ label: { text: input.value, color: 'white', // 文本颜色 fontSize: '14px', // 字号 fontWeight: 'bold' // 字体粗细 } }); } function myMap() { var lat = 59.614503; var lng = 16.546082; var mapOptions = { center: new google.maps.LatLng(lat, lng), zoom: 12 }; map = new google.maps.Map(document.getElementById('map'), mapOptions); // 创建带初始空标签的标记 marker = new google.maps.Marker({ position: new google.maps.LatLng(lat, lng), map: map, label: { text: '', color: 'white' } }); }
重要提醒
千万别直接尝试修改marker.text哦,Google Maps的Marker根本没有这个原生属性,这么做是不会生效的~上面两种是最常用的实现方案,你可以根据自己的需求选一种。
内容的提问来源于stack exchange,提问作者Albin Wärme
相关产品推荐
相关产品推荐

