Я строю регистрационную форму с ограничениями по площади. Только люди в пределах 4 км могут зарегистрироваться в системе.
Я установил Google Matrix API и добавил приведенный ниже код для расчета.
//*********DISTANCE AND DURATION**********************//
var service = new google.maps.DistanceMatrixService();
service.getDistanceMatrix({
origins: [source],
destinations: [destination],
travelMode: google.maps.TravelMode.DRIVING,
unitSystem: google.maps.UnitSystem.METRIC,
avoidHighways: false,
avoidTolls: false
}, function (response, status) {
if (status == google.maps.DistanceMatrixStatus.OK && response.rows[0].elements[0].status != "ZERO_RESULTS") {
var distance = response.rows[0].elements[0].distance.text;
//alert(distance);
console.log(distance);
var fields = distance.split(' ');
var name = fields[0];
name = name.replace(",", ".");
var street = fields[1];
if (name < 4 && (street == "km" || street == "m" )) {
if (document.RegForm.address.value == "") {
//alert( "Please provide your address!" );
document.RegForm.address.focus();
return false;
}
else {
var address = document.RegForm.address.value;
localStorage.setItem("address", address);
}
Это работает, но у меня есть проблема. Например, адрес с расстоянием 4,5 клм рассчитывается как 4,5 клм. Таким образом, ограничение работает и не позволяет пользователю зарегистрироваться.
Теперь я перемещаю штифт в другую страну, и он вычисляет расстояние в 2,383 км и позволяет пользователю зарегистрироваться (что, конечно, неправильно).
Как я понимаю, проблема в символах "." и ","
Кроме того, как можно ограничить форму автозаполнения Google показом результатов из одного города?
Нет государства или страны. Но город.