Google Map

摘要:google 动态map

1、准备资料

官方文档:https://developers.google.com/maps/documentation/javascript/adding-a-google-map

2、生成谷歌地图

  1. <!-- 地图的元素 -->
  2. <div id="map-ontolo"></div>
  3. <!--官方api(key需要替换下)-->
  4. <script
  5. src="https://maps.googleapis.com/maps/api/js?key=keyCode&callback=initMap&v=weekly"
  6. defer
  7. ></script>
  8. <script>
  9. // 定义中点
  10. const uluru = { lng: 110.4, lat: 30.2 };
  11. const map = new google.maps.Map(document.getElementById("map-ontolo"), {
  12. zoom: 4,
  13. center: uluru,
  14. });
  15. </script>

3、给地图动态添加标记

  1. <script>
  2. // json数据
  3. var markers= [
  4. { position: { lng: 110.4, lat: 30.2 }, name: "我是测试数据1", id:'oc_01', img:'photo.webp',address: '001',bgImg:'bg.webp'},
  5. { position: { lng: 112.5, lat: 30.2 }, name: "我是测试数据2", id:'oc_02', img:'xiamu.jpeg',address: '002',bgImg:'bg.webp'},
  6. { position: { lng: 114.5, lat: 30.2 }, name: "我是测试数据3", id:'oc_03', img:'sansan.jpeg',address: '003',bgImg:'bg.webp'},
  7. { position: { lng: 116.5, lat: 30.2 }, name: "我是测试数据4", id:'oc_04', img:'sansan1.jpeg',address: '004',bgImg:'bg.webp'},
  8. ]
  9. // 遍历markers,给地图动态添加标记
  10. markers.forEach((item) => {
  11. const marker = new google.maps.Marker({
  12. position: item.position,
  13. draggable: false, //不可拖动
  14. map: map, //地图实例,
  15. markerData: item,
  16. markerID: item.id
  17. });
  18. markerList.push(marker)
  19. // 此处可以为marker添加事件
  20. google.maps.event.addListener(marker, "mouseover", function(e){
  21. // 处理infowindow中要展示的html
  22. var infoWindowContent =
  23. `<div class="info-window-box" style="background-image: url(` + item.bgImg + `);background-size:100% 100%">
  24. <img src="`+ item.img + `">
  25. <div class="name">` + item.name + `</div>
  26. <div>` + item.address + `</div>
  27. </div>`
  28. // 使用setContent给infowindow动态添加内容
  29. infowindow.setContent(infoWindowContent)
  30. infowindow.open({
  31. anchor: marker,
  32. map,
  33. shouldFocus: false,
  34. });
  35. });
  36. })
  37. </script>

4、联动地图外数据,打开infowindow

  1. <script>
  2. // 监听左侧鼠标悬停事件
  3. var activeDom = document.getElementsByClassName('data-list-item')
  4. for(let i=0;i<activeDom.length;i++){
  5. activeDom[i].addEventListener("mouseover",function(e){
  6. if(markerList[i].markerID == this.getAttribute('id')){
  7. // 处理infowindow中要展示的html
  8. var infoWindowContent =
  9. `<div class="info-window-box" style="background-image: url(` + markers[i].bgImg + `);background-size:100% 100%">
  10. <img src="`+ markers[i].img + `">
  11. <div class="name">` + markers[i].name + `</div>
  12. <div>` + markers[i].address + `</div>
  13. </div>`
  14. infowindow.setContent(infoWindowContent)
  15. infowindow.open({
  16. anchor: markerList[i],
  17. map,
  18. shouldFocus: false,
  19. });
  20. }
  21. })
  22. }
  23. </script>


评论