大体而言,首先是:

我想在我们国家的OpenStreetMap map 上放一张带云的天气雷达图像. 这是巴新的雷达图像:

radar image

这是以色列官方气象学家的官方网站: 这不是openstreemap,但图像是 map 的一部分,我可以放大/缩小.

这是我想在我的Wix网站上提出的相同概念:

png image on map

放大后:

png image on map

这是以色列官方气象网站,所以你可以明白我将图像添加到 map 上的意思

这是我的Wix网站,网站上没有什么比Open Streemap map 和图片更多的东西:https://chocolade13091972.wixsite.com/chocolade-imagine

在Wix中,我上传了PNG图像到我的站点,然后使用html和javascript,我可以将Open Streemap map 添加到我的站点,然后我可以拖动PNG图像,问题是当我发布我的站点时,图像覆盖在 map 上方,它不是 map 的一部分.

结果是,例如,当我放大/缩小时,图像不会与 map 一起放大/缩小. 这就是为什么我需要以某种方式使PNG图像将成为 map 的一部分,但还没有使PNG变得有点透明,所以如果我放大很多,我会通过图像看到一点 map .

这是使用wix中的embed html将openstreemap map添加到wix站点的代码,这段代码还使用png图像并try 使其成为map的组成部分:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Map with PNG Image</title>
   <link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />
   <style>
      body, html, #map {
         height: 100%;
         margin: 0;
      }
   </style>
</head>
<body>
   <div id="map"></div>

   <script src="https://unpkg.com/leaflet/dist/leaflet.js"></script>
   <script>
      var map = L.map('map').setView([32.00718, 34.81487], 10);

      L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
         attribution: '© OpenStreetMap contributors'
      }).addTo(map);

      // Define the bounds of your image (latitudes and longitudes)
      var bounds = [[32.00718, 34.81487], [33, 39.7]];

      // Create an image overlay and add it to the map
      var imageUrl = 'https://static.wixstatic.com/media/f7ee46_b3c10d0bb92644aaa9ef18bfbb3df0ee~mv2.png';
      var imageBounds = bounds;

      L.imageOverlay(imageUrl, imageBounds).addTo(map);
   </script>
</body>
</html>

但结果甚至不接近原始png图像,也不像它应该在 map 上那样:

image on map and the image is part of the map but the image is not fitting as it should be

如果我缩小我的Wix网站,看看我的国家,你可以看到右侧远处雷达PNG图像的云层.

the png image is not positioned on the map as it should be

我的问题首先是如何让图像成为 map 不可分割的一部分?也许我在这里提供的代码正在做这项工作.

但最大的问题是如何让形象适合我的国家以色列?和他们在官方网站上做的一样.

推荐答案

您的图像是正方形940px×940px.但是,在您的 map 中,它显示为一个矩形:

L.rectangle(bounds).addTo(map);
/// bounds is defined in your code as the bounds for the image  var bounds = [[32.00718, 34.81487], [33, 39.7]];

Rectangle

你需要为你的形象设定权利界限,但很难猜到.

通过将图像边界设置为[[31.5, 34], [33, 35.5]],可以获得以下结果:

enter image description here

记住边界是西南角/东北角.你将不得不从你的雷达图像的原始来源获得它们.

enter image description here

有关详细信息,请参阅宣传单文档:

Javascript相关问答推荐

如何使用JavaScript用等效的功能性HTML替换标记URL格式?

有Angular 的material .未应用收件箱中的价值变化

如何获取转换字节的所有8位?

Bootstrap动态选项卡在切换选项卡后保持活动状态,导致元素堆叠

使用下表中所示的值初始化一个二维数组

你怎么看啦啦队的回应?

从包含数百行的表中获取更改后的值(以表单形式发送到后端)的正确方法是什么?

为什么我的getAsFile()方法返回空?

用于在路径之间移动图像的查询

为什么我的自定义元素没有被垃圾回收?

在开发期间,Web浏览器如何运行&qot;.jsx&qot;文件?

Rxjs流中生成IMMER不能在对象上操作

如何在 Select 文本时停止Click事件?

ngOnChanges仅在第二次调用时才触发

在SuperBase JS客户端中寻址JSON数据

Reaction即使在重新呈现后也会在方法内部保留局部值

如何使用Reaction路由导航测试挂钩?

将以前缓存的 Select 器与querySelector()一起使用

验证Java脚本函数中的两个变量

如何从图表中映射一组图表-js使用REACT