我正在尝试确定一种方法来计算在给定缩放级别1个像素表示的米数和Leaflet中的地理中心点.任何人都可以指导我参与数学计算,或者是否有办法在传单中开箱即用?我在那里找不到太多东西.
我正在开发一个应用程序,我有一个圆心和半径,我在Leaflet的帮助下绘制圆圈.
我在圆周的最北端放置了一个标记,使其可以拖动.
var circle = L.circle(coords, radius).addTo(map);
convertRadiusToLatitude = parseInt(response.radius)/111111;
var coordsOnRadius = [parseFloat(response.lat) + convertRadiusToLatitude, parseFloat(response.long)];
var markerOnRadius = L.marker(coordsOnRadius, {draggable: true}).addTo(map);
Run Code Online (Sandbox Code Playgroud)
现在,这将标记添加到圆周,现在我希望它只能在我使用参数方程的圆周上拖动.
参数方程
x = Xc + R * cos(theta)
y = Yc + R * sin(theta)
Run Code Online (Sandbox Code Playgroud)
拖动代码
markerOnRadius.on('drag', function(e){
bearing = marker.getLatLng().bearingTo(markerOnRadius.getLatLng());
var markerOnRadiusX = parseFloat(response.lat) + ((0.000009 * parseFloat(response.radius)) * Math.cos( toRad(bearing) ));
var markerOnRadiusY = parseFloat(response.long) + ((0.000009 * parseFloat(response.radius)) * Math.sin( toRad(bearing) ));
markerOnRadius.setLatLng([markerOnRadiusX, markerOnRadiusY]);
});
Run Code Online (Sandbox Code Playgroud)
该bearingTo方法:
L.LatLng.prototype.bearingTo = function(other) {
var …Run Code Online (Sandbox Code Playgroud)