【发布时间】:2015-08-16 02:17:27
【问题描述】:
我正在开发一个应用程序,其中有一个标记和一个圆圈。
现在我在圆的圆周上创建另一个可拖动的标记。但我只希望它可以在圆周上拖动。
var coords = [parseFloat(response.lat), parseFloat(response.long)];
terrainAnalysisMap.setView(coords, 18);
var marker = L.marker(coords).addTo(terrainAnalysisMap);
var circle = L.circle([parseFloat(response.lat), parseFloat(response.long)], parseFloat(response.radius)).addTo(terrainAnalysisMap);
convertRadiusToLatitude = parseInt(response.radius)/111111;
var coordsOnRadius = [parseFloat(response.lat) + convertRadiusToLatitude, parseFloat(response.long)];
var markerOnRadius = L.marker(coordsOnRadius, {draggable: true}).addTo(terrainAnalysisMap);
如何做到这一点?如何使markerOnRadius 可拖动但只能在圆的边缘?
或
我可以引入一个小的输入字段,用户可以在其中输入度数,然后标记将移动到圆周上的那个点?
即使有人能指出正确的算法并告诉我如何使用它,我也会自己做。我只是数学不太好,这就是为什么我无法弄清楚这一点。
使用基于答案的代码进行编辑
$('#terrainAnalysisAngle').on('keyup', function(e){
var markerOnRadiusX = parseFloat(response.lat) + (0.000009 * parseFloat(response.radius)) * Math.cos($(this).val());
var markerOnRadiusY = parseFloat(response.long) + (0.000009 * parseFloat(response.radius)) * Math.sin($(this).val());
console.log([markerOnRadiusX, markerOnRadiusY]);
markerOnRadius.setLatLng([markerOnRadiusX, markerOnRadiusY]);
});
【问题讨论】:
标签: javascript algorithm leaflet mapbox