OK Я пытаюсь использовать одну из проверенных и правильных формул для Geofence. Мое второе предупреждение в коде должно быть результатом истины ... но оно всегда говорит false. Есть идеи?Geofencing with Javascript
var points = [{
x: 35.586680,
y: -80.874079
}, {
x: 35.586646,
y: -80.872840
}, {
x: 35.585852,
y: -80.872732
}, {
x: 35.585673,
y: -80.873918
}];
function isPointInPoly(poly, pt) {
for (var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)((poly[i].y <= pt.y && pt.y < poly[j].y) || (poly[j].y <= pt.y && pt.y < poly[i].y)) && (pt.x < (poly[j].x - poly[i].x) * (pt.y - poly[i].y)/(poly[j].y - poly[i].y) + poly[i].x) && (c = !c);
return c;
}
jQuery(window).ready(function() {
jQuery("#btnInit").click(initiate_geolocation);
jQuery("#checkit").click(e);
});
function initiate_geolocation() {
navigator.geolocation.getCurrentPosition(handle_geolocation_query);
}
function handle_geolocation_query(position) {
alert('Lat: ' + position.coords.latitude + ' ' +
'Lon: ' + position.coords.longitude);
alert(isPointInPoly(points, {
X: 35.586488,
Y: -80.873660
}));
alert(isPointInPoly(points, {
X: position.coords.latitude,
y: position.coords.longitude
}));
}
Вот JSFiddle Link
Он предупреждает верно, когда 'c' изменяется истина, потому что вы говорите' возвращение c' – Cilan