UNPKG

iovmap

Version:
540 lines (537 loc) 18.7 kB
<!DOCTYPE html> <html lang="en"> <head> <title>iovmap项目演示页面</title> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <script src="./dist/iovmap.min.js"></script> <script src="./line.js"></script> </head> <body onload="initMap()"> <div id="app" style="width: 600px; height: 400px"></div> <div style="border: 1px solid red; margin-top: 10px; padding: 5px"> <select name="" id="select_maptype"> <option value="BMap">百度地图</option> <option value="BMap_Sate">百度卫星图</option> <option value="BMap_Custom_midnight">百度暗夜样式图</option> <option value="BMap_Custom_dark">百度黑夜样式图</option> <option value="BMap_Custom_grayscale">百度灰色样式图</option> <option value="GMap">谷歌地图</option> <option value="GMap_Sate">谷歌卫星图</option> <option value="GMap_CN">谷歌中国地图</option> <option value="GMap_Sate_CN">谷歌中国卫星图</option> <option value="AMap">高德地图</option> <option value="AMap_Sate">高德卫星图</option> <option value="SSMap">SOSO地图</option> <option value="OSMap">OpenStreat地图</option> <option value="AMap+BEKD">AMap+BEKD</option> <option value="AMap_Sate+BEKD">AMap_Sate+BEKD</option> </select> <!-- <button onclick="initMap()">初始化地图</button> --> <button onclick="setZoom()">缩放地图</button> <button onclick="flyTo()">移动地图fly</button> <button onclick="panTo()">移动地图pan</button> <button onclick="setView()">设置地图视图</button> <button onclick="getView()">获取地图视图</button> <button onclick="minZoom()">全图</button> <button onclick="maxZoom()">大图</button> <button onclick="flyEye()">鹰眼</button> <button onclick="zoomIn()">放大</button> <button onclick="zoomOut()">缩小</button> <button onclick="boxIn()">拉框缩小</button> <button onclick="boxOut()">拉框放大</button> <button onclick="distance()">测量距离</button> <button onclick="boxFind()">拉框找车</button> <button onclick="flyToBounds()">地图视野fly</button> <button onclick="fitBounds()">地图视野fit</button> <button onclick="changeMap()">切换地图</button> <button onclick="showMapRoadGrid()">显示路网(卫星图下有效)</button> <button onclick="hideMapRoadGrid()">隐藏路网</button> </div> <div style="border: 1px solid green; margin-top: 10px; padding: 5px"> <button onclick="marker_draw()">绘制marker</button> <button onclick="marker_load()">加载marker</button> <button onclick="marker_edit()">编辑marker</button> <button onclick="marker_change()">改变marker外形</button> <button onclick="marker_changeInfowin()">改变marker气泡内容</button> <button onclick="marker_moveTo()">移动marker</button> <button onclick="marker_remove()">移除marker</button> </div> <div style="border: 1px solid gray; margin-top: 10px; padding: 5px"> <button onclick="initMarkerList()">初始化markerList(cnavas)</button> <button onclick="initMarkerList2()">初始化markerList(native)</button> <button onclick="setImageSrc()">更新marker图标</button> <button onclick="push()">增加markerList内容</button> <button onclick="updateIcon()">更新其中一个图标</button> <button onclick="openPopup()">打开其中一个气泡</button> <button onclick="removeMarkerList()">移除</button> </div> <div style="border: 1px solid yellow; margin-top: 10px; padding: 5px"> <button onclick="polyline_draw()">绘制polyline</button> <button onclick="polyline_load()">加载polyline</button> <button onclick="polyline_edit()">编辑polyline</button> <button onclick="polyline_loadTrack()">加载轨迹polyline</button> <button onclick="polyline_remove()">移除polyline</button> </div> <div style="border: 1px solid blue; margin-top: 10px; padding: 5px"> <button onclick="rectangle_draw()">绘制rectangle</button> <button onclick="rectangle_load()">加载rectangle</button> <button onclick="rectangle_edit()">编辑rectangle</button> <button onclick="rectangle_remove()">移除rectangle</button> </div> <div style="border: 1px solid brown; margin-top: 10px; padding: 5px"> <button onclick="polygon_draw()">绘制polygon</button> <button onclick="polygon_load()">加载polygon</button> <button onclick="polygon_edit()">编辑polygon</button> <button onclick="polygon_remove()">移除polygon</button> </div> <div style="border: 1px solid palevioletred; margin-top: 10px; padding: 5px"> <button onclick="circle_draw()">绘制circle</button> <button onclick="circle_load()">加载circle</button> <button onclick="circle_edit()">编辑circle</button> <button onclick="circle_remove()">移除circle</button> </div> <div style="border: 1px solid palevioletred; margin-top: 10px; padding: 5px"> <button onclick="track_load()">加载track</button> <button onclick="track_update()">更新track</button> <button onclick="track_remove()">移除track</button> </div> <div style="border: 1px solid palevioletred; margin-top: 10px; padding: 5px"> <button onclick="tooltip_load()">加载tooltip</button> <button onclick="tooltip_remove()">移除tooltip</button> </div> <script> let iovMap = null; let initMap = function () { let node = document.getElementById("select_maptype"); iovMap = new IOVMap.Map("app", { type: node.value }); }; let setZoom = function () { iovMap.setZoom(10); }; let minZoom = function () { iovMap.minZoom(); }; let maxZoom = function () { iovMap.maxZoom(); }; let isFlyEye = false; let flyEye = function () { if (!isFlyEye) { iovMap.openFlyEye(); isFlyEye = true; } else { iovMap.closeFlyEye(); isFlyEye = false; } }; let flyTo = function () { iovMap.flyTo([29.716608, 115.115005]); }; let panTo = function () { iovMap.panTo([29.716608, 115.115005]); }; let setView = function () { iovMap.setView([29.716608, 115.115005], 10); }; let getView = function () { const temp = iovMap.getView(); console.log(temp); }; let boxIn = function () { iovMap.boxIn(); }; let boxOut = function () { iovMap.boxOut(); }; let zoomIn = function () { iovMap.zoomIn(); }; let zoomOut = function () { iovMap.zoomOut(); }; let distance = function () { iovMap.distance(); }; let flyToBounds = function () { let start = [line[0].lat, line[0].lng]; let end = [line[line.length - 1].lat, line[line.length - 1].lng]; iovMap.flyToBounds(start, end); }; let fitBounds = function () { let start = [line[0].lat, line[0].lng]; let end = [line[line.length - 1].lat, line[line.length - 1].lng]; iovMap.fitBounds(start, end); }; let changeMap = function () { let node = document.getElementById("select_maptype"); iovMap.changeMap(node.value, {}); }; const showMapRoadGrid = function () { let node = document.getElementById("select_maptype"); iovMap.showRoadGrid(node.value.split('_')[0], {}); } const hideMapRoadGrid = function () { iovMap.hideRoadGrid(); } let boxFind = function () { const Rectangle = new IOVMap.Rectangle(iovMap.map); let temp = { lat: 33.161818, lng: 105.523438, }; let tempArray = []; for (let index = 0; index < 5000; index++) { temp.lat += 0.001; temp.lng += 0.002; tempArray.push({ lat: temp.lat, lng: temp.lng, text: "测A" + (1000 + index), id: index, }); } Rectangle.draw(function (v) { const result = iovMap.findExist(tempArray, v); console.log(result); }); }; // Marker let iovMarker = null; let marker_draw = function () { iovMarker = new IOVMap.Marker(iovMap.map); iovMarker.draw(function (latlngs) { console.log(latlngs); }); }; let marker_load = function () { let start = line[0]; iovMarker = new IOVMap.Marker(iovMap.map); iovMarker.load( 39.90553, 116.391305, "./assets/images/circle_blue_16_ns.png", [16, 16], [8, 8], "我是天安门国旗点", "我的坐标系是wgs84", function (e) { console.log(e); } ); }; let marker_edit = function () { let start = line[50]; iovMarker = new IOVMap.Marker(iovMap.map); iovMarker.edit(start.lat, start.lng, function (v) { console.log(v); }); }; let marker_change = function () { iovMarker.change("./assets/images/circle_black_16_ns.png"); }; let marker_changeInfowin = function () { iovMarker.changeInfoWin("i am test infowin"); }; let marker_moveTo = function () { let end = line[line.length - 1]; iovMarker.moveTo(end.lat, end.lng); }; let marker_remove = function () { iovMarker.remove(); }; // markerList let markerListFlag = false; let initMarkerList = function () { markerListFlag = false; let canvas = iovMap.createCanvasPane(); markerList = new IOVMap.MarkerList(iovMap.map, canvas, function (id) { console.log(id); let now = new Date(); markerList.setPopupContent(now.getTime() + ""); }); }; let initMarkerList2 = function () { markerListFlag = true; markerList = new IOVMap.MarkerList_Native( iovMap.map, function (id) { console.log(id); let now = new Date(); markerList.setPopupContent(now.getTime() + ""); }, function () { console.log("close popup"); } ); }; let setImageSrc = function () { if (!markerListFlag) { markerList.setImageSrc([ "./assets/images/offline.gif", "./assets/images/online.gif", "./assets/images/alarm.gif", ]); } else { markerList.setImageSrc([ "./assets/images/offline.gif", "./assets/images/online.gif", "./assets/images/alarm.gif", "./assets/images/stopaccon.gif", ]); } }; let push = function () { let temp = { lat: 33.161818, lng: 105.523438, }; let tempArray = []; for (let index = 0; index < line.length; index++) { const temp = line[index]; tempArray.push({ lat: temp.lat, lng: temp.lng, text: "测A" + (1000 + index), state: 1, type: 0, direction: index * 30, id: index, a: new Date().getTime(), b: new Date().getTime(), c: new Date().getTime(), d: new Date().getTime(), e: new Date().getTime(), f: new Date().getTime(), g: new Date().getTime(), h: new Date().getTime(), i: new Date().getTime(), j: new Date().getTime(), }); } markerList.push(tempArray); setInterval(() => { for (let index = 0; index < tempArray.length; index++) { if (index === tempArray.length - 1) { tempArray[index].lat = tempArray[0].lat; tempArray[index].lng = tempArray[0].lng; } else { tempArray[index].lat = tempArray[index + 1].lat; tempArray[index].lng = tempArray[index + 1].lng; } } markerList.push(tempArray); }, 5000); }; let updateIcon = function () { let one = { lat: 33.161818, lng: 105.523438, text: "测A11111", type: 0, state: 3, direction: 0, id: 1, }; markerList.updateIcon(one); }; let openPopup = function () { markerList.openPopup(1); }; let removeMarkerList = function () { markerList.remove(); }; //polyline let iovPolyline = null; let polyline_draw = function () { iovPolyline = new IOVMap.Polyline(iovMap.map); iovPolyline.draw(function (v) { console.log(v); }); }; let polyline_load = function () { let latlngs = getLatlngsFromLine(); iovPolyline = new IOVMap.Polyline(iovMap.map); iovPolyline.load(latlngs); }; let polyline_loadTrack = function () { iovPolyline = new IOVMap.Polyline(iovMap.map); iovPolyline.loadTrack(line); }; let polyline_edit = function () { let latlngs = getLatlngsFromLine(); iovPolyline = new IOVMap.Polyline(iovMap.map); iovPolyline.edit(latlngs, function (v) { console.log(v); }); }; let polyline_remove = function () { iovPolyline.remove(); }; //polygon let iovPolygon = null; let polygon_draw = function () { iovPolygon = new IOVMap.Polygon(iovMap.map); iovPolygon.draw(function (v) { console.log(v); }); }; let polygon_load = function () { let latlngs = getLatlngsFromLine(); iovPolygon = new IOVMap.Polygon(iovMap.map); iovPolygon.load(latlngs); }; let polygon_edit = function () { let latlngs = getLatlngsFromLine(); iovPolygon = new IOVMap.Polygon(iovMap.map); iovPolygon.edit(latlngs, function (v) { console.log(v); }); }; let polygon_remove = function () { iovPolygon.remove(); }; //rectangle let iovRectangle = null; let rectangle_draw = function () { iovRectangle = new IOVMap.Rectangle(iovMap.map); iovRectangle.draw(function (v) { console.log(v); }); }; let rectangle_load = function () { let start = [line[0].lat, line[0].lng]; let end = [line[line.length - 1].lat, line[line.length - 1].lng]; iovRectangle = new IOVMap.Rectangle(iovMap.map); iovRectangle.load([start, end]); }; let rectangle_edit = function () { let start = [line[0].lat, line[0].lng]; let end = [line[line.length - 1].lat, line[line.length - 1].lng]; iovRectangle = new IOVMap.Rectangle(iovMap.map); iovRectangle.edit([start, end], function (v) { console.log(v); }); }; let rectangle_remove = function () { iovRectangle.remove(); }; //circle let iovCircle = null; let circle_draw = function () { iovCircle = new IOVMap.Circle(iovMap.map); iovCircle.draw(function (v, r) { console.log(v + "," + r); }); }; let circle_load = function () { let start = [line[0].lat, line[0].lng]; let radius = 4; iovCircle = new IOVMap.Circle(iovMap.map); iovCircle.load(start, radius, { id: new Date().getTime(), color: 'red', weight: 1 }, function (v) { console.log(v); }); }; let circle_edit = function () { let start = [line[0].lat, line[0].lng]; let radius = 4000; iovCircle = new IOVMap.Circle(iovMap.map); iovCircle.edit(start, radius, function (v, r) { console.log(v + "," + r); }); }; let circle_remove = function () { iovCircle.remove(); }; //从线路获取经纬度列表 let getLatlngsFromLine = function () { let result = []; line.forEach((element) => { result.push([element.lat, element.lng]); }); return result; }; // track let iovTrack = null; let trackMarkers = []; let track_load = function () { var latlngs = [ [39.898457, 116.391844], [39.898595, 116.377947], [39.898341, 116.368001], [39.898063, 116.357144], [39.899095, 116.351934], [39.905871, 116.35067], [39.922329, 116.3498], [39.931017, 116.349671], [39.939104, 116.349225], [39.942233, 116.34991], [39.947263, 116.366892], [39.947568, 116.387537], [39.947764, 116.401988], [39.947929, 116.410824], [39.947558, 116.42674], [39.9397, 116.427338], [39.932404, 116.427919], [39.923109, 116.428377], [39.907094, 116.429583], [39.906858, 116.41404], [39.906622, 116.405321], [39.906324, 116.394954], [39.906308, 116.391264], [39.916611, 116.390748], ]; iovTrack = new IOVMap.TrackLine(iovMap.map); const track = iovTrack.loadTrack(latlngs, { weight: 8 }); iovTrack.loadTrackDecorator(track, { weight: 2, color: "#FFFFFF", stroke: true, }); iovTrack.loadMarker({ lat: 39.898457, lng: 116.391844, direction: 0, enableInfoWindow: true, }); iovTrack.loadPopup('i am popup') latlngs.forEach(latlng => { let radius = 4; const circle = new IOVMap.CircleMarker(iovMap.map); circle.load(latlng, radius, { id: new Date().getTime(), color: 'red', weight: 1 }, "<h2>info</h2>", null, function (v) { console.log(v); }); trackMarkers.push(circle); }); }; let track_update = function () { let i = 0; setInterval(() => { iovTrack.updateMarker({ lat: 39.947263, lng: 116.366892, direction: 0 + i, content: "ffff", }); i += 45; }, 1000 / 16); }; let track_remove = function () { iovTrack.remove(); trackMarkers.forEach(marker => { marker.remove(); }); }; //tooltip let iovTooltip = null; let tooltip_load = function () { iovTooltip = new IOVMap.Tooltip(iovMap.map); iovTooltip.load(29.716608, 115.115005, { content: "<span style='color:red'>我是一个tooltip</span>", permanent: true, direction: 'right' }); }; let tooltip_remove = function () { iovTooltip.remove(); }; </script> </body> </html>