我的名字叫João,我正在使用leaflet.js在巴西坎皮纳斯大学完成我的结业课程项目。要解决的问题是:标记需要留在路线内,如果不需要,则返回假。有人能帮我吗?谢谢。
var map = L.map('map',18);
L.tileLayer('https://{s}.tile.osm.org/{z}/{x}/{y}.png', {
maxZoom: 20,
}).addTo(map);
var cont = 0;
var marker = null;
function refresh() {
$.ajax({
method: "GET",
url: "mapa/coordenada",
dataType: "json"
})
.done(function( msg ) {
registro_coordenada(msg.coordenada);
});
}
function select_cord() {
$.ajax({
method: "GET",
url: "mapa/coordenada",
dataType: "json"
})
.done(function( msg ) {
add_cord(msg.coordenada);
});
}
function add_cord(coordenada){
out = coordenada.split(",");
var control = L.Routing.control(L.extend(window.lrmConfig, {
waypoints: [
L.latLng(-22.5627235,-47.425501),
L.latLng([out[0],out[1]])
],
geocoder: L.Control.Geocoder.nominatim(),
routeWhileDragging: true,
reverseWaypoints: true,
showAlternatives: true,
altLineOptions: {
styles: [
{color: 'black', opacity: 0.15, weight: 9},
{color: 'white', opacity: 0.8, weight: 6},
{color: 'blue', opacity: 0.5, weight: 2}
]
}
})).addTo(map);
L.Routing.errorControl(control).addTo(map);
}
var icone = new L.Icon({
iconUrl: 'https://cdn.rawgit.com/pointhi/leaflet-color-markers/master/img/marker-icon-2x-red.png',
shadowUrl: 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.7/images/marker-shadow.png',
iconSize: [25, 41],
iconAnchor: [12, 41],
popupAnchor: [1, -34],
shadowSize: [41, 41]
});
function registro_coordenada(coordenada){
out = coordenada.split(",");
if (cont === 0 ){
marker = L.marker([out[0],out[1]], {icon: icone}).addTo(map).bindPopup("<b>Localização atual</b>").openPopup();
cont = 1;
return;
}
map.removeLayer(marker);
//var marker = L.marker([out[0],out[1]]).remove(map).bindPopup("<b>Localização atual</b>").openPopup();
marker = L.marker([out[0],out[1]], {icon: icone}).addTo(map).bindPopup("<b>Localização atual</b>").openPopup().closePopup();
}
$(document).ready(function(){
if ($('#map')){
self.setInterval(function () {
refresh()
}, 1000);
}
select_cord();
});
无法在GitHub处解决问题
如果有人帮助我,我将非常感激!
答案 0 :(得分:0)
您无法执行此操作,因为计算几何如何工作的更精细的细节:由于线串的点以浮点表示,因此可能存在没有(有效)浮点表示的线段该段中的点数。
此处采取的方法是计算从给定点到给定线串的距离,然后检查该距离是否在阈值内。因此,“内部”的含义发生了变化,变为“与线的距离不超过(阈值)距离。”
请注意,由于浮点舍入误差(在这种情况下,从点到点的距离),任何点到线的距离算法对于在线上不是的点都可能返回零。行小于使用的浮点格式的精度或计算过程中累积的浮点错误。
(据我所知)距离点到线串距离算法的最著名的javascript实现是the one in Turf.js。