【问题标题】:google api return kilometers instead of milesgoogle api返回公里而不是英里
【发布时间】:2017-03-01 00:27:32
【问题描述】:

我有一个应用程序来计算两点之间的距离。

https://maps.googleapis.com/maps/api/distancematrix/json?origins=" + 始发地 + "&destinations=" + 目的地 + "&units=imperial...

我将单位设置为英制,但是以 Kms 和 Ft 为单位返回一些距离。是否需要设置其他参数。

提前致谢

【问题讨论】:

  • 您能否提供示例出发地/目的地来证明您的问题?

标签: google-maps google-api


【解决方案1】:

这是我用来获取以英里为单位的距离的代码。

方法一:
您必须使用您的密钥调用 google map api JS 库,然后使用以下代码。

var origin1 = new google.maps.LatLng(55.930385, -3.118425);
var origin2 = 'Greenwich, England';
var destinationA = 'Stockholm, Sweden';
var destinationB = new google.maps.LatLng(50.087692, 14.421150);
//var  uniteSystem = 'IMPERIAL';
var service = new google.maps.DistanceMatrixService();
service.getDistanceMatrix(
  {
    origins: [origin1],
    destinations: [destinationA],
    travelMode: 'DRIVING' ,
    unitSystem: google.maps.UnitSystem.IMPERIAL   
  }
  , callback);

function callback(response, status) {
  // See Parsing the Results for
  // the basics of a callback function.
  console.log(response);
}

您将有一个元素数组作为响应。

方法二: 这是我用来获取以英里为单位的距离的 url 方法。 https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=40.6655101,-73.89188969999998&destinations=41.43206,-81.38992&key=TOUR_API_KEY

记得更改 API 密钥。

【讨论】:

    【解决方案2】:

    如果您想要 公里 的结果,请使用 unitSystem: google.maps.UnitSystem.METRIC。 如果您想要 Miles 的结果,请使用 unitSystem: google.maps.UnitSystem.IMPERIAL

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8"/>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <script src="http://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
    <script>
    $(document).ready(function(){
        var distanceService = new google.maps.DistanceMatrixService();
         distanceService.getDistanceMatrix({
            origins: ["10 West 35th Street, Chicago, IL, USA"], //$("#autocompleteDeparture").val()
            destinations: ["Union Station, South Canal Street, Chicago, IL, USA"], //$("#autocompleteArrival").val()
            travelMode: google.maps.TravelMode.DRIVING,
            unitSystem: google.maps.UnitSystem.IMPERIAL, //use "IMPERIAL" for Miles, "METRIC" for KMs
            durationInTraffic: true,
            avoidHighways: false,
            avoidTolls: false
        },
        function (response, status) {
            if (status !== google.maps.DistanceMatrixStatus.OK) {
                console.log('Error:', status);
            } else {
                console.log(response);
            }
        });
    });
    </script>
    </head>
    <body>
    </body>
    </html>
    

    【讨论】:

      【解决方案3】:

      distance.text 字段以请求中传递的单位表示; distance.value 字段始终以米为单位。

      请参阅the Distance Matrix developer guide,您会找到以下简介:

      注意:此单位系统设置仅影响距离字段中显示的文本。距离字段还包含始终以米表示的值。

      【讨论】:

      • 感谢 Mike Post 的回复。奇怪的是我总是得到文本字段(见下面的代码),这是一个批处理,它给了我大约 10,000 个距离,其中大部分以英里为单位,但有一些以公里为单位
      • HttpWebResponse response = (HttpWebResponse)request.GetResponse();使用 (var streamReader = new StreamReader(response.GetResponseStream())) { var result = streamReader.ReadToEnd(); Rootobject _result = JsonConvert.DeserializeObject(result); Console.WriteLine(_result.status); if (_result.status == "OK") { return _result.rows[0].elements[0].distance.text.ToString(); }
      【解决方案4】:

      只需将单位从英制改为公里,

      https://maps.googleapis.com/maps/api/distancematrix/json?origins=" + origins + "&destinations=" + destinations + "&units=km...
      

      【讨论】:

        猜你喜欢
        • 2021-12-17
        • 1970-01-01
        • 2017-06-12
        • 1970-01-01
        • 1970-01-01
        • 2011-09-10
        • 1970-01-01
        • 1970-01-01
        • 2011-06-30
        相关资源
        最近更新 更多