下降标记与3857投影在传单

Drop Marker with 3857 projection in leafletjs

本文关键字:投影 3857      更新时间:2023-09-26

是否可以在传单中在地图上放置3857投影标记?

我喜欢一个解决方案,首先使用proj4js翻译点到4326,然后把它放在地图上。

var source = new Proj4js.Proj('EPSG:3857');
    var dest = new Proj4js.Proj('EPSG:4326');
    var p = new Proj4js.Point(-12307.601047734, 6711475.1283642);
    Proj4js.transform(source, dest, p);
  new L.Marker([p.y, p.x], {bounceOnAdd: true}).addTo(map);

在核心传单或传单插件中是否有其他方法可以在不使用proj4js库的情况下掉落标记。

谢谢。

在网上度过了美好的时光。我终于完成了。

var point = new L.Point(-12307.601047734, 6711475.1283642);
var earthRadius = 6378137;
var latlng = L.Projection.SphericalMercator.unproject(
               point.divideBy(earthRadius));
new L.Marker([latlng.lat, latlng.lng], {bounceOnAdd: true}).addTo(map);

相同的代码到一个可重用的函数:

L.CRS.EPSG3857.unproject = function (point) { // (Point) -> LatLng var earthRadius = 6378137, normalizedPoint = point.divideBy(earthRadius); return this.projection.unproject(normalizedPoint); }

使用方式:

var latlng = L.CRS.EPSG3857.unproject(point);

的例子:

var point = new L.Point(-12307.601047734, 6711475.1283642); L.marker(L.CRS.EPSG3857.unproject(point), {bounceOnAdd: true}).addTo(map);