首先总体来说:
我想在我的国家的 openstreetmap 地图上放置带有云的天气雷达图像。 这是雷达图像的png图像:
这就是以色列官方气象学家官方网站上的样子: 它不是 openstreemap,但图像是地图的一部分,我可以放大/缩小。
这与我想在我的 wix 网站中提出的概念相同:
放大后:
这是以色列官方天气网站,因此您可以通过将图像添加到地图中来了解我的意思:https://ims.gov.il/he/RadarSatellite
这是我的 wix 网站,网站上除了 openstreemap 地图和图像之外什么都没有:https://chocolade13091972.wixsite.com/chocolade-imagine
在wix中,我上传到我的网站png图像,然后使用html和javascript,我可以将openstreemap地图添加到我的网站,然后我可以拖动png图像,问题是当我发布我的网站时,图像覆盖在地图上方,它是不是地图的一部分。
结果是,例如,当我放大/缩小时,图像没有随地图一起放大/缩小。 这就是为什么我需要以某种方式使 png 图像成为地图的一部分,但又要使 png 有点透明,这样如果我放大很多,我会稍微透过图像看到地图。
这是使用 wix 中的嵌入 html 将 openstreemap 地图添加到 wix 站点的代码,并且此代码还采用 png 图像并尝试使其成为地图的组成部分:
<!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 图像并不接近,也不如地图上应有的那样:
如果我缩小我的wix网站以查看我的国家,您可以在右侧远处的某处看到雷达png图像的云。
我的问题首先是如何使图像成为地图的一个组成部分?也许我在这里提供的代码正在完成这项工作。
但最大的问题是如何让图像适合我的国家以色列?和官方网站上的一样。
您的图像是一个 940px × 940px 的正方形。但是,在您的地图中,它显示为矩形:
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]];
您需要为图像设置权限范围,但很难猜测它们。
通过将图像边界设置为
[[31.5, 34], [33, 35.5]]
,您将得到以下结果:
请记住,边界是西南角/东北角。您必须从雷达图像的原始来源获取它们。
有关更多信息,请参阅传单文档: