【问题标题】:calculate distance between 2 points using Javascript API in IONIC 2使用 IONIC 2 中的 Javascript API 计算两点之间的距离
【发布时间】:2017-06-28 16:00:58
【问题描述】:

我想获取用户的当前位置并计算该位置与其他位置之间的距离。我正在使用本教程:Create a Nearby Places List with Google Maps in Ionic 2。 这是代码:

let usersLocation;
Geolocation.getCurrentPosition().then((position) => {

   usersLocation = { lat :position.coords.latitude ,  lng : position.coords.longitude }
   locations.map((location) => {

    let placeLocation = {
      lat: location.latitude,
      lng: location.longitude
    };

    location.distance = this.getDistanceBetweenPoints(
        usersLocation,
        placeLocation,
        'miles'
    ).toFixed(2);
  });

});

问题是:usersLocation变量没有设置当前用户所在位置的经纬度。你能帮助我吗!!

【问题讨论】:

  • 您的 .then 函数仅在调用 getCurrentPosition 的成功结果时使用。你应该有一个很好的方法来捕捉错误,使用错误函数:developers.google.com/web/fundamentals/getting-started/primers/…。错误函数将帮助您确定调用 getCurrentPosition() 时可能发生的故障。我敢打赌,您调用 getCurrentPosition() 时会出错并且正在吃掉它。
  • 我使用了上面链接中指示的方法,但是在成功或错误两种情况下都没有输入。我在另一个提供程序中调用函数 getCurrentPosition() 并且它工作正常。
  • 您的 config.xml 是否具有允许 gps 权限的功能
  • 没有。它没有那个功能。
  • 确保您已关注cordova.apache.org/docs/en/latest/reference/… 以启用使用gps。

标签: typescript google-maps-api-3 ionic-framework ionic2


【解决方案1】:
calculateDistance(lat1:number,lat2:number,long1:number,long2:number){
    let p = 0.017453292519943295;    // Math.PI / 180
    let c = Math.cos;
    let a = 0.5 - c((lat1-lat2) * p) / 2 + c(lat2 * p) *c((lat1) * p) * (1 - c(((long1- long2) * p))) / 2;
    let dis = (12742 * Math.asin(Math.sqrt(a))); // 2 * R; R = 6371 km
    return dis;
  }

【讨论】:

  • 是的。乘以 0.621371 以转换为英里。
  • 那么,如果我将“dis”除以 1000,我会得到以米为单位的值,对吧?
【解决方案2】:

试试 google DirectionsService:

https://developers.google.com/maps/documentation/javascript/directions

滚动到页尾,最后一个例子计算点之间的距离。

【讨论】:

    猜你喜欢
    • 2019-07-10
    • 2017-09-03
    • 2010-10-30
    • 1970-01-01
    • 2011-04-23
    • 2014-11-14
    相关资源
    最近更新 更多