Leaflet中使用leaflet-cion-pulse插件实现波动的图标效果

阳光穿透心脏的1/2处 2023-10-01 12:32 102阅读 0赞

场景

Leaflet快速入门与加载OSM显示地图:

Leaflet快速入门与加载OSM显示地图_BADAO_LIUMANG_QIZHI的博客-CSDN博客

在上面的基础上,怎样使用插件实现波动的图标效果如下

29ac35766dae4f1a8a342c91e8a1159f.gif

注:

博客:
BADAO_LIUMANG_QIZHI的博客_霸道流氓气质_CSDN博客-C#,SpringBoot,架构之路领域博主
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

1、插件地址

https://github.com/mapshakers/leaflet-icon-pulse

2、下载插件代码,引入需要的js文件L.Icon.Pulse.js

watermark_type_d3F5LXplbmhlaQ_shadow_50_text_Q1NETiBA6Zy46YGT5rWB5rCT5rCU6LSo_size_20_color_FFFFFF_t_70_g_se_x_16

3、这里直接把css文件放在html中,不再单独引入

  1. .leaflet-pulsing-icon {
  2. border-radius: 100%;
  3. box-shadow: 1px 1px 8px 0 rgba(0, 0, 0, 0.75);
  4. }
  5. .leaflet-pulsing-icon:after {
  6. content: "";
  7. border-radius: 100%;
  8. height: 300%;
  9. width: 300%;
  10. position: absolute;
  11. margin: -100% 0 0 -100%;
  12. }
  13. @keyframes pulsate {
  14. 0% {
  15. transform: scale(0.1, 0.1);
  16. opacity: 0;
  17. -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
  18. filter: alpha(opacity=0);
  19. }
  20. 50% {
  21. opacity: 1;
  22. -ms-filter: none;
  23. filter: none;
  24. }
  25. 100% {
  26. transform: scale(1.2, 1.2);
  27. opacity: 0;
  28. -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
  29. filter: alpha(opacity=0);
  30. }
  31. }

4、声明波动图标并添加到地图

  1. //波动图标声明并设置样式
  2. var pulsingIcon = L.icon.pulse({
  3. iconSize: [20, 20],
  4. color: 'red'
  5. });
  6. //图标添加到地图上
  7. var marker = L.marker([36.09, 120.35], {
  8. icon: pulsingIcon
  9. }).addTo(map);

5、完整示例代码

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>leaflet加载osm</title>
  6. <link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" />
  7. <style>
  8. html,
  9. body,
  10. #map {
  11. padding: 0;
  12. margin: 0;
  13. width: 100%;
  14. height: 100%;
  15. overflow: hidden;
  16. }
  17. .leaflet-pulsing-icon {
  18. border-radius: 100%;
  19. box-shadow: 1px 1px 8px 0 rgba(0, 0, 0, 0.75);
  20. }
  21. .leaflet-pulsing-icon:after {
  22. content: "";
  23. border-radius: 100%;
  24. height: 300%;
  25. width: 300%;
  26. position: absolute;
  27. margin: -100% 0 0 -100%;
  28. }
  29. @keyframes pulsate {
  30. 0% {
  31. transform: scale(0.1, 0.1);
  32. opacity: 0;
  33. -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
  34. filter: alpha(opacity=0);
  35. }
  36. 50% {
  37. opacity: 1;
  38. -ms-filter: none;
  39. filter: none;
  40. }
  41. 100% {
  42. transform: scale(1.2, 1.2);
  43. opacity: 0;
  44. -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
  45. filter: alpha(opacity=0);
  46. }
  47. }
  48. </style>
  49. </head>
  50. <body>
  51. <div id="map"></div>
  52. <script type="text/javascript" src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"></script>
  53. <script type="text/javascript" src="./js/L.Icon.Pulse.js"></script>
  54. <script type="text/javascript">
  55. var map = L.map('map').setView([36.09, 120.35], 13);
  56. L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
  57. attribution: ''
  58. }).addTo(map);
  59. //波动图标声明并设置样式
  60. var pulsingIcon = L.icon.pulse({
  61. iconSize: [20, 20],
  62. color: 'red'
  63. });
  64. //图标添加到地图上
  65. var marker = L.marker([36.09, 120.35], {
  66. icon: pulsingIcon
  67. }).addTo(map);
  68. </script>
  69. </body>
  70. </html>

发表评论

表情:
评论列表 (有 0 条评论,102人围观)

还没有评论,来说两句吧...

相关阅读