传单圆绘图/编辑问题

leaflet circle drawing / editing issue

我是第一次制作传单,遇到了绘制圆圈和编辑(更改圆圈位置)的问题。

我面临的问题是:-

  1. 将圆从一个位置编辑(移动)到另一个位置会改变其半径。
    注意:请尝试在给定 fiddle 的地图顶部创建圆圈,然后通过单击编辑按钮将其移动到底部。

  2. 如果我在地图的顶部创建圆圈,效果很好。但是如果我在地图底部创建圆圈,它只会在地图上打印一个点。 我检查了几个例子,它在任何地方都运行良好。
    Here is the working example 其中圆圈创建和移动圆圈完全没问题。

我没有像 google 地图那样使用地理地图。我正在使用静态图像,因为这是我的项目要求。

这里是fiddle of my code.

只需使用以下代码即可启用绘图圆:

enabled : this.options.circle,
handler : new L.Draw.Circle(map,this.options.circle),
title : L.drawLocal.draw.toolbar.buttons.circle

您看到的是墨卡托投影中固有的距离失真(以及基于它的 Google 墨卡托投影,这是大多数在线地图所固有的)。因为您的地图从缩放 1 开始,拖动圆圈标记 north/south 会导致大量变形。

因此,与其将图像地理配准到全局边界框,不如尝试将其地理配准到更小的东西。在您的情况下,您正在添加相对于 maxZoom 的图像叠加层,因此通过增加 maxZoom,您的图像将覆盖在地球的较小区域上,并且您会看到更少(或没有)跨纬度的扭曲。

我将 maxZoom 从 4 更改为 14,结果看起来效果很好:fiddle here: var w = 553, h = 329, url = 'https://kathleenmillar.files.wordpress.com/2012/10/picture2.png';

    var map = L.map('map', {
        minZoom : 10,
        maxZoom : 14,
        center : [ w / 2, h / 2 ],
        zoom : 11,
        crs : L.CRS.Simple

    });

    // calculate the edges of the image, in coordinate space
    var southWest = map.unproject([ 0, h ], map.getMaxZoom() - 3);
    var northEast = map.unproject([ w, 0 ], map.getMaxZoom() - 3);
    var bounds = new L.LatLngBounds(southWest, northEast);