4

km の値があり、それをブラウザーのロケール固有の測定単位 (km またはマイル) に変換したいと考えています。

私は Google Maps API v3 directionService を使用しています。具体的には、このページの最後の例です。

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";
}

必要に応じて変換を実行できるように、ブラウザのロケールの測定単位を決定するにはどうすればよいですか?

4

2 に答える 2

2

マップ API のデフォルトは、元の国の単位系の UnitSystem であるため、より良い解決策がない限り、次を使用します。

var metric = myroute.legs[0].distance.text.indexOf(" km") != -1?true:false;

特にエレガントではないことはわかっていますが、信頼性が高く、自由に使えるデータを必要としません。

directionService が使用する実際の UnitSystem を取得する方法を探してみましたが、成功しませんでした。

APIドキュメントから:

単位系

デフォルトでは、ルートは出発地の国または地域の単位系を使用して計算および表示されます。(注: 住所ではなく緯度/経度座標を使用して表される起点は、常にデフォルトでメートル単位になります。)たとえば、「シカゴ、イリノイ州」から「トロント、オンタリオ州」へのルートは結果をマイルで表示し、逆のルートは結果を表示します。キロで。次の UnitSystem 値のいずれかを使用して、リクエスト内で明示的に設定することにより、この単位系をオーバーライドできます。

UnitSystem.METRIC は、メートル法の使用法を指定します。距離はキロメートルで表示されます。UnitSystem.IMPERIAL は、インペリアル (英語) システムの使用法を指定します。距離はマイルで表示されます。注: この単位系の設定は、ユーザーに表示されるテキストにのみ影響します。ルート検索結果には、距離の値も含まれますが、ユーザーには表示されず、常にメートル単位で表されます。

于 2013-09-08T18:38:37.933 に答える