摘要:google 动态map
官方文档:https://developers.google.com/maps/documentation/javascript/adding-a-google-map
<!-- 地图的元素 --><div id="map-ontolo"></div><!--官方api(key需要替换下)--><scriptsrc="https://maps.googleapis.com/maps/api/js?key=keyCode&callback=initMap&v=weekly"defer></script><script>// 定义中点const uluru = { lng: 110.4, lat: 30.2 };const map = new google.maps.Map(document.getElementById("map-ontolo"), {zoom: 4,center: uluru,});</script>
<script>// json数据var markers= [{ position: { lng: 110.4, lat: 30.2 }, name: "我是测试数据1", id:'oc_01', img:'photo.webp',address: '001',bgImg:'bg.webp'},{ position: { lng: 112.5, lat: 30.2 }, name: "我是测试数据2", id:'oc_02', img:'xiamu.jpeg',address: '002',bgImg:'bg.webp'},{ position: { lng: 114.5, lat: 30.2 }, name: "我是测试数据3", id:'oc_03', img:'sansan.jpeg',address: '003',bgImg:'bg.webp'},{ position: { lng: 116.5, lat: 30.2 }, name: "我是测试数据4", id:'oc_04', img:'sansan1.jpeg',address: '004',bgImg:'bg.webp'},]// 遍历markers,给地图动态添加标记markers.forEach((item) => {const marker = new google.maps.Marker({position: item.position,draggable: false, //不可拖动map: map, //地图实例,markerData: item,markerID: item.id});markerList.push(marker)// 此处可以为marker添加事件google.maps.event.addListener(marker, "mouseover", function(e){// 处理infowindow中要展示的htmlvar infoWindowContent =`<div class="info-window-box" style="background-image: url(` + item.bgImg + `);background-size:100% 100%"><img src="`+ item.img + `"><div class="name">` + item.name + `</div><div>` + item.address + `</div></div>`// 使用setContent给infowindow动态添加内容infowindow.setContent(infoWindowContent)infowindow.open({anchor: marker,map,shouldFocus: false,});});})</script>
<script>// 监听左侧鼠标悬停事件var activeDom = document.getElementsByClassName('data-list-item')for(let i=0;i<activeDom.length;i++){activeDom[i].addEventListener("mouseover",function(e){if(markerList[i].markerID == this.getAttribute('id')){// 处理infowindow中要展示的htmlvar infoWindowContent =`<div class="info-window-box" style="background-image: url(` + markers[i].bgImg + `);background-size:100% 100%"><img src="`+ markers[i].img + `"><div class="name">` + markers[i].name + `</div><div>` + markers[i].address + `</div></div>`infowindow.setContent(infoWindowContent)infowindow.open({anchor: markerList[i],map,shouldFocus: false,});}})}</script>