Как получить единицы измерения языка браузера
У меня есть значение в км, и я хочу преобразовать его в конкретную единицу измерения местоположения в браузере (км или мили).
Я использую google maps API v3 directionsService, в частности последний пример на этой странице.
function computeTotalDistance(result) {
var total = 0;
var myroute = result.routes[0];
for (i = 0; i < myroute.legs.length; i++) {
total += myroute.legs[i].distance.value;
}
total = total / 1000.
document.getElementById("total").innerHTML = total + " km";
}
Как я могу определить единицу измерения языка браузера, чтобы я мог выполнить преобразование, если это необходимо?
Я думаю, самый простой способ - проверить window.navigator.language
и проверить, выбрал ли пользователь "en-US"
или "my"
, так как большинство стран вводит метрическую систему (см. Эту карту). Вы также можете использовать GeoIP, но в целом вы должны предоставить пользователю возможность изменить систему, если он предпочитает другую.
Сам браузер не сохраняет предпочтения единиц измерения.
Поскольку API-интерфейс карт по умолчанию относится к UnitSystem единичной системы страны происхождения, я собираюсь использовать следующее, если у кого-то нет лучшего решения:
var metric = myroute.legs[0].distance.text.indexOf(" km") != -1?true:false;
Я знаю, что это не особенно элегантно, но кажется надежным, и он не требует каких-либо данных, которые у меня еще нет в моем распоряжении.
Я попытался найти способ получить фактическую UnitSystem, чтобы использовать службы services, но безуспешно.
Из документации API:
Единичные системы
По умолчанию направления рассчитываются и отображаются с использованием единичной системы страны происхождения или региона. (Примечание: происхождение, выраженное с использованием координат широты/долготы, а не адресов, по умолчанию всегда соответствует метрическим единицам.) Например, маршрут от "Чикаго, Иллинойс" до "Торонто, ОНТ" отобразит результаты в милях, в то время как обратный маршрут отобразит результаты в километрах. Вы можете переопределить эту систему устройств, указав ее явно в запросе, используя одно из следующих значений UnitSystem:
UnitSystem.METRIC указывает использование метрической системы. Расстояния показаны с использованием километров. UnitSystem.IMPERIAL указывает использование имперской (английской) системы. Расстояния показаны с помощью миль. Примечание: этот системный параметр системы влияет только на текст, отображаемый пользователю. Результат направления также содержит значения расстояния, не показанные пользователю, которые всегда выражаются в метрах.
- Вопросы
- Google-maps-api-3
- Как получить единицы измерения языка браузера