在传单中是否可以使用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库的情况下删除标记。
感谢。
答案 0 :(得分:4)
在互联网上度过了愉快的时光。我终于完成了它。
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);
答案 1 :(得分:2)
相同的代码到可重用的函数中:
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);