| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 
 | <!DOCTYPE html><html lang="en">
 <head>
 <meta charset="UTF-8" />
 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 <title>Document</title>
 
 <style>
 body {
 margin: 0;
 padding: 0;
 width: 100vw;
 height: 100vh;
 }
 
 #container {
 position: relative;
 width: 100%;
 height: 100%;
 }
 
 #map {
 width: 100%;
 height: 100%;
 }
 
 #mySvg {
 position: absolute;
 left: 0;
 top: 0;
 width: 100%;
 height: 100%;
 pointer-events: none;
 }
 </style>
 
 
 <script
 type="text/javascript"
 src="https://api.map.baidu.com/api?v=3.0&ak=您的ak密钥"
 ></script>
 </head>
 
 <body>
 <div id="container">
 <div id="map"></div>
 <svg id="mySvg" xmlns="http://www.w3.org/2000/svg"></svg>
 </div>
 
 <script>
 
 const points = [
 { lng: 116.404, lat: 39.915 },
 { lng: 116.405, lat: 39.92 },
 { lng: 116.423493, lat: 39.907445 },
 ];
 
 
 const formatPoint = (point) => {
 if (point instanceof Array) {
 return new BMap.Point(parseFloat(point[0]), parseFloat(point[1]));
 } else if (point instanceof Object) {
 return new BMap.Point(parseFloat(point.lng), parseFloat(point.lat));
 }
 };
 
 const $map = document.getElementById("map");
 const $mySvg = document.getElementById("mySvg");
 
 
 const map = new BMap.Map($map);
 map.enableScrollWheelZoom();
 map.disableDoubleClickZoom();
 map.centerAndZoom(formatPoint(points[0]), 15);
 
 
 const addCusPolyline = () => {
 
 let pixels = points.map((point) =>
 map.pointToPixel(formatPoint(point))
 );
 
 let d = "";
 for (let i = 0; i < pixels.length; i++) {
 let pixel = pixels[i];
 if (i === 0) {
 d += `M ${pixel.x}, ${pixel.y} `;
 } else {
 d += `L ${pixel.x}, ${pixel.y} `;
 }
 }
 let pathStr = `<path d="${d}" style="fill-opacity: 0; stroke: red; stroke-width: 2;"></path> `;
 $mySvg.setAttribute(
 "viewBox",
 `0 0 ${$mySvg.clientWidth} ${$mySvg.clientHeight}`
 );
 $mySvg.innerHTML = pathStr;
 };
 addCusPolyline();
 
 
 const removePolyline = () => {
 $mySvg.innerHTML = "";
 };
 
 
 map.removeEventListener("zoomstart", removePolyline);
 map.removeEventListener("dragstart", removePolyline);
 map.removeEventListener("tilesloaded", addCusPolyline);
 map.addEventListener("zoomstart", removePolyline);
 map.addEventListener("dragstart", removePolyline);
 map.addEventListener("tilesloaded", addCusPolyline);
 </script>
 </body>
 </html>
 
 |