如何在传单中投影像素坐标
How to project pixel coordinates in leaflet?
我正在尝试根据 16384x16384 像素的图像创建地图,但我还想使用此给定图像的像素坐标在特定位置添加标记。
我创建了一个图块图层、一个地图元素并设置了最大边界,以便我无法使用以下代码滚动出图像:
var map = L.map('map', {
maxZoom: 6,
minZoom: 2,
crs: L.CRS.Simple
}).setView([0, 0], 2);
var southWest = map.unproject([0,16384], map.getMaxZoom());
var northEast = map.unproject([16384,0], map.getMaxZoom());
map.setMaxBounds(new L.LatLngBounds(southWest, northEast));
L.tileLayer('tiles/{z}/{x}/{y}.png', {
tms: true
}).addTo(map);
我想添加到地图中的点作为 GeoJSON 存储在外部文件中,它们看起来像这样 http://www.de-egge.de/maps/terranigma/terraPoints.js
我使用以下代码片段加载它们:
var terraPoints = new L.geoJson(points, {
onEachFeature: function (feature, layer) {
layer.bindPopup(
"<b>Ort: </b>" + feature.properties["points[, 1]"]
);
}
});
map.addLayer(terraPoints);
但是,当然,它们不会出现,因为参考系统不匹配。这些点使用像素坐标,但我的地图使用地理坐标。
有没有办法在加载点时"取消投影"点?
非常感谢任何帮助,提前感谢!
var geoJsonTest = new L.geoJson(geojsonFeature, {
coordsToLatLng: function (newcoords) {
return (map.unproject([newcoords[1], newcoords[0]], map.getMaxZoom()));
},
pointToLayer: function (feature, coords) {
return L.circleMarker(coords, geojsonMarkerOptions);
}
});
这就是你使用的方式,以防你还没有弄清楚。看到坐标反转,我在选项中更改了它们。非常适合我。
L.GeoJSON
具有对映射坐标有用的coordsToLatLng()
。
http://leafletjs.com/reference.html#geojson-coordstolatlng
相关文章:
- 如何通过溢出来判断元素被切断了多少像素:隐藏在父级上
- 点击facebook像素跟踪注册(JS/JQUERY代码)
- 点击(右键点击)使用传单地图库获取图像覆盖的像素坐标
- 如何使线条的边缘像素保持半透明
- 画布:逐像素绘制图像并请求动画帧计时
- 如何's css标记"-webkit最小设备像素比”;在Javascript中实现
- javascript mootools平滑滚动'x'像素数量
- 逐像素碰撞检测弹球
- 获取图像的平均外部像素颜色
- 如何根据分辨率添加像素
- 仅当窗口宽度>940像素,无论是通过页面加载还是调整大小
- 使用画布在秒内逐像素显示图片
- JS/CSS:如何在向下滚动超过1200像素(高度)后更改z索引值
- 获取以屏幕像素为单位的旋转SVG元素的边界
- 如何将像素添加到元素的当前位置
- GridStack项的高度和宽度(以像素为单位)
- 在用户用动画滚动175像素后缩小固定的Div
- CSS将百分比转换为像素
- 滚动到..如何滚动到#上方一定数量的像素
- 如何在传单中投影像素坐标