Я прочитал это сообщение введите ссылку здесь относительно отправки строки вместо номера, но я специально вызываю parseFloat() перед отправкой. Это происходит только в IE.
var getLatLngExtraAddr = function(tempAddr, y){
if(mIE == "true"){
$.ajax({
url: "php/ie_extra.php",
data: {"address": tempAddr},
dataType: "text",
success: function(data){
var msg = $.parseJSON(data);
//console.log("msg "+msg);
extraAddrLat.push(parseFloat(msg.results[0].geometry.location.lat));
extraAddrLng.push(parseFloat(msg.results[0].geometry.location.lng));
var p1 = new google.maps.LatLng(parseFloat(origLat[0]), parseFloat(origLng[0]));
var p2 = new google.maps.LatLng(parseFloat(extraAddrLat[y]), parseFloat(extraAddrLng[y]));
console.log("extraAddrLat["+y+"] "+extraAddrLat[y]);
mAddressesObj[y].dist = (google.maps.geometry.spherical.computeDistanceBetween(p1, p2) * 0.000621371192).toFixed(2);
console.log("mAddressesObj[y].dist "+mAddressesObj[y].dist);
}
});
}else{
$.ajax({
url: "https://maps.googleapis.com/maps/api/geocode/json",
data: {"address": tempAddr},
success: function(data){
if(typeof(data.results[0]) != "undefined"){
extraAddrLat.push(parseFloat(data.results[0].geometry.location.lat));
extraAddrLng.push(parseFloat(data.results[0].geometry.location.lng));
var p1 = new google.maps.LatLng(parseFloat(origLat[0]), parseFloat(origLng[0]));
var p2 = new google.maps.LatLng(parseFloat(extraAddrLat[y]), parseFloat(extraAddrLng[y]));
mAddressesObj[y].dist = calcDistance(p1, p2);
console.log("mAddressesObj[y].dist "+mAddressesObj[y].dist);
}
}
});
}
}
После исправления "ошибок, связанных с доступом" и нескольких других ошибок, я создал прокси, чтобы IE мог читать геометрию .location.lat, исходящую из завитка.
Вот консольный журнал из IE:
LOG: extraAddrLat[2] undefined
LOG: mAddressesObj[y].dist NaN
LOG: extraAddrLat[0] 53.5408345
LOG: mAddressesObj[y].dist NaN
LOG: extraAddrLat[3] undefined
LOG: mAddressesObj[y].dist NaN
LOG: extraAddrLat[1] 53.52903209999999
LOG: mAddressesObj[y].dist NaN
LOG: extraAddrLat[5] undefined
LOG: mAddressesObj[y].dist NaN
LOG: extraAddrLat[4] 53.54180909999999
LOG: mAddressesObj[y].dist NaN
LOG: extraAddrLat[6] 53.5441529
LOG: mAddressesObj[y].dist NaN
Как вы можете видеть, я получаю правильный lat, lng для каждого адреса, но затем, когда я пытаюсь отправить эти значения в google.maps.geometry.spherical.computeDistanceBetween - он возвращается с NaN
Я отправлял его в другую функцию (calcDistance), как и во всех других браузерах, но я подумал, что, возможно, parseFloat каким-то образом теряется, когда IE сам преобразует его в строку. В результате я сразу установил свойство "dist" объекта mAddressObj и еще "NaN"
Как? И более важный вопрос, почему IE?
Как обычно, спасибо заранее