Leaflet 传单latLngToContainerPoint和containerPointToLatLng不对等?

Leaflet 传单latLngToContainerPoint和containerPointToLatLng不对等?,leaflet,Leaflet,有人知道为什么下面的说法是不对等的吗?latLng和new var point = dispmap.latLngToContainerPoint(latlng); var newPoint = L.point([point.x, point.y]); var newLatLng = dispmap.containerPointToLatLng(newPoint); 当我执行此代码时,我发送latlng=(26.75529,-80.93581) newLatLng,通过检查上面的代码

有人知道为什么下面的说法是不对等的吗?latLng和new

  var point = dispmap.latLngToContainerPoint(latlng);
  var newPoint = L.point([point.x, point.y]);
  var newLatLng = dispmap.containerPointToLatLng(newPoint);
当我执行此代码时,我发送latlng=(26.75529,-80.93581)

newLatLng,通过检查上面的代码,我希望得到回报

newLatLng=(26.75542,-80.93628)

我想在地图上的共享点周围排列一些具有相同纬度的标记,根据我读过的一些博客/问题,用屏幕坐标撞击每个标记看起来是最好的方法

我已经“接近”我想要实现的目标,但当我试图验证这些传单电话对我的作用时,我触及了上面的基本问题。

他们不可能

纬度和经度是浮点值,而x和y是整数值

这意味着(理论上)在你的视野中有无限多的板条和相当少的点(宽度*高度)

此外,我不确定你如何定义相同的板条;你最不能说的就是近在咫尺

如果我在两行之间阅读,相同可能意味着标记重叠。那么最好的办法就是看看我们是如何解决这个问题的。

他们不可能

纬度和经度是浮点值,而x和y是整数值

这意味着(理论上)在你的视野中有无限多的板条和相当少的点(宽度*高度)

此外,我不确定你如何定义相同的板条;你最不能说的就是近在咫尺


如果我在两行之间阅读,相同可能意味着标记重叠。那么最好的办法就是看看我们是如何解决这个问题的。

我通过改变缩放级别来避免像素点量化对翻译的影响,从而达到了我想要的效果。下面的屏幕截图显示了一个橙色和两个绿色圆圈标记,它们表示相同的板条,但我希望绿色以圆形方式围绕橙色排列……在本例中,只有两个绿色

在本例中,我使用PI/4的角度步长执行简单的圆形阵列数学。获得正确视觉效果的关键是在我进行计算之前调用“dispmap.setZoom(dispmap.\u layersMaxZoom)”,然后在计算之后调用“dispmap.setZoom(mats.zoom)”,这将为用户提供由变量mats.zoom指定的所需缩放级别

    var arrayRad=20;
    var dtheta=Math.PI/4;
    var theta=0;

    dispmap.setZoom(dispmap._layersMaxZoom)
    L.geoJson(JSON.parse(mats.intendeds), {
        pointToLayer: function (feature, latlng) {
            var point = dispmap.latLngToContainerPoint(latlng);
            dx = arrayRad*Math.cos(theta);
            dy = arrayRad*Math.sin(theta);
            theta += dtheta;
            var newPoint = L.point([point.x + dx, point.y+ dy]);
            var newLatLng = dispmap.containerPointToLatLng(newPoint);

            return L.circleMarker(newLatLng, intendedDeliveryLocationMarkerOptions);
        }, onEachFeature: onEachIntendedLocFeature }).addTo(dispmap);

    dispmap.setZoom(mats.zoom);

我通过改变缩放级别来避免像素点量化对翻译的影响,从而达到了我想要的效果。下面的屏幕截图显示了一个橙色和两个绿色圆圈标记,它们表示相同的板条,但我希望绿色以圆形方式围绕橙色排列……在本例中,只有两个绿色

在本例中,我使用PI/4的角度步长执行简单的圆形阵列数学。获得正确视觉效果的关键是在我进行计算之前调用“dispmap.setZoom(dispmap.\u layersMaxZoom)”,然后在计算之后调用“dispmap.setZoom(mats.zoom)”,这将为用户提供由变量mats.zoom指定的所需缩放级别

    var arrayRad=20;
    var dtheta=Math.PI/4;
    var theta=0;

    dispmap.setZoom(dispmap._layersMaxZoom)
    L.geoJson(JSON.parse(mats.intendeds), {
        pointToLayer: function (feature, latlng) {
            var point = dispmap.latLngToContainerPoint(latlng);
            dx = arrayRad*Math.cos(theta);
            dy = arrayRad*Math.sin(theta);
            theta += dtheta;
            var newPoint = L.point([point.x + dx, point.y+ dy]);
            var newLatLng = dispmap.containerPointToLatLng(newPoint);

            return L.circleMarker(newLatLng, intendedDeliveryLocationMarkerOptions);
        }, onEachFeature: onEachIntendedLocFeature }).addTo(dispmap);

    dispmap.setZoom(mats.zoom);

我的目的不是将距离较近的位置进行聚类,而是在实际lat/lng周围整齐地排列6个相同的位置标记。我认为我不应该执行LatLng到point的转换,然后再回到LatLng,而应该只是将图标撞上一些像素点。上面的转换方法也是我在查看API时发现的参考方法。我已经看到了令人印象深刻的集群努力,但它看起来比我需要的更多,因为它集群了不同的lat lngs,它赢了;t在最高的缩放级别上“分离”我的标记,尽我所能接近。谢谢你的建议…考虑到我的意图,我想知道你是否有更好的建议。你可以探索spiderfyOnMaxZoom选项。我的意图不是聚集在附近的位置,但在实际lat/lng周围整齐排列6个相同的位置标记。我认为我不应该执行LatLng到point的转换,然后再回到LatLng,而应该只是将图标撞上一些像素点。上面的转换方法也是我在查看API时发现的参考方法。我已经看到了令人印象深刻的集群努力,但它看起来比我需要的更多,因为它集群了不同的lat lngs,它赢了;t“分离”我的标记在最高的缩放级别,接近我能说的。谢谢你的建议…只是想知道如果你有更好的建议,鉴于我的意图。有一个spiderfyOnMaxZoom选项,你可以探索。