当前位置:   article > 正文

高德地图2.0内网部署 离线瓦片 性能优化_高德地图瓦片服务

高德地图瓦片服务

1.在工作中遇到需要实时加载实时轨迹和实时目标 数据量大的话会很卡 (性能优化)

通过创建不同的图层来管理不同的目标物和轨迹

  1. function createNewMarker(item) {
  2. const layer2 = new AMap.LabelsLayer({ //创建图层
  3. zooms: [2, 20],
  4. zIndex: 1000,
  5. });
  6. let icon = {};
  7. let imgUrl = getIconUrl(Number(item.Type));
  8. icon = {
  9. type: "image",
  10. image: imgUrl, // 设置图标的图片地址
  11. size: [35, 38],
  12. offset: new AMap.Pixel(0, -10),
  13. anchor: "center",
  14. };
  15. const num = Math.floor(Math.random() * 30) + 1;
  16. let pos2 = _this.WGS84_2_GCJ02([item.Longitude, item.Latitude]);
  17. var marker = new AMap.LabelMarker({ // 创建LabelMarker
  18. zooms: [2, 20],
  19. opacity: 1,
  20. zIndex: 1000,
  21. fold: true,
  22. icon,
  23. position: pos2,
  24. id: item.BatchNumber,
  25. Exist: item.Exist,
  26. color: colors[num],
  27. angle: 0,
  28. });
  29. markerMap.set(item.BatchNumber, marker);
  30. // 添加 marker 到图层
  31. layer2.add(marker);
  32. window.map.add(layer2);
  33. _this.markers.push(marker);
  34. }

2.将map挂载在window.map 上避免vue的依赖收集和派发更新

2.在使用2.0的时候会有AMap is not defined 的问题 我的解决方案是将map.js放在服务端 去加载 我的是通过node 开启本地服务来访问数据 

  1. // 允许所有来源的跨域请求
  2. app.use((req, res, next) => {
  3. res.header("Access-Control-Allow-Origin", "*");
  4. res.header(
  5. "Access-Control-Allow-Headers",
  6. "Origin, X-Requested-With, Content-Type, Accept"
  7. );
  8. next();
  9. });
  10. // 创建API路由
  11. const filePath = path.join(__dirname, "/js/amap.js"); // 替换为你的文件路径
  12. // 设置路由来处理文件读取请求
  13. app.get("/api/map-data", (req, res) => {
  14. // 使用 fs.readFile 读取文件内容
  15. fs.readFile(filePath, "utf8", (err, data) => {
  16. if (err) {
  17. console.error("Error reading file", err);
  18. return res.status(500).send("Error reading the file");
  19. }
  20. // 设置响应的 Content-Type 为 text/javascript
  21. res.setHeader("Content-Type", "text/javascript");
  22. // 发送原始文件内容
  23. res.send(data);
  24. });
  25. });

访问方法 

  1. // 地图初始化
  2. const script = document.createElement("script");
  3. script.src = `http://localhost:3000/api/map-data`; //node服务访问
  4. script.type = "text/javascript";
  5. script.onload = this.initAmap.bind(this); // initAmap加载地图的地方
  6. document.head.appendChild(script);
  7. let base_url = "http://localhost:3000";
  8. // let base_url = "http://192.168.10.99:3000";
  9. this.customLayer = new AMap.TileLayer({
  10. getTileUrl: function (x, y, z) {
  11. return `${base_url}/city/${z}/${x}/${y}.jpg`;
  12. },
  13. opacity: 1,
  14. zIndex: 99,
  15. });
  16. this.layer = new AMap.LabelsLayer({
  17. zooms: [2, 20],
  18. zIndex: 1000,
  19. });
  20. this.layer1 = new AMap.VectorLayer({
  21. zooms: [2, 20],
  22. zIndex: 100,
  23. });
  24. window.map = new AMap.Map("container", {
  25. zoom: 12,
  26. resizeEnable: true,
  27. defaultCursor: "pointer",
  28. showLabel: true, //是否显示文字标注
  29. center: this.centerPoint,
  30. scrollWheel: true,
  31. viewMode: "3D", //显示罗盘 就需要3D地图了
  32. pitch: 0,
  33. layers: [this.customLayer],
  34. });
  35. // window.map.add(this.customLayer)
  36. window.map.add(this.layer);
  37. window.map.add(this.layer1);

3.地图瓦片前面的文章有写

4.最后声明 以上均无商用 个人学习的小demo 无商用行为 和 任何利益收取 ,商用项目请访问高德地图官方网站更新日志-地图 JS API 1.4 | 高德地图API

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/824549
推荐阅读
相关标签
  

闽ICP备14008679号