微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 distanceTo() 方法计算传单中两个标记之间的距离?

如何解决如何使用 distanceTo() 方法计算传单中两个标记之间的距离?

我需要你的帮助来使用 distanceto() 方法计算两个标记间的距离。 我试图在 Angular 中实现它,但在控制台中出现了以下错误

代码如下:

display() {

    let from_select = $('#from_station option:selected').val();
    let to_select = $('#to_station option:selected').val();

    let filteredStations1 = this.stationsNames.filter( function(currentStation1:any) {
      return currentStation1.name == from_select;
    })

    let filteredStations2 = this.stationsNames.filter( function(currentStation2:any) {
      return currentStation2.name == to_select;
    })

    let from = JSON.parse(filteredStations1[0].loc_stringify);
    let to = JSON.parse(filteredStations2[0].loc_stringify);

    console.log(from.distanceto(to));
  
  }

错误

ERROR TypeError: from.distanceto is not a function
    at AddEditTripComponent.display (main.js:1125)
    at AddEditTripComponent_Template_button_click_16_listener (main.js:1174)
    at executeListenerWithErrorHandling (vendor.js:58037)
    at wrapListenerIn_markDirtyAndPreventDefault (vendor.js:58072)
    at HTMLButtonElement.<anonymous> (vendor.js:76806)
    at ZoneDelegate.invokeTask (polyfills.js:9646)
    at Object.onInvokeTask (vendor.js:71332)
    at ZoneDelegate.invokeTask (polyfills.js:9645)
    at Zone.runTask (polyfills.js:9414)
    at ZoneTask.invokeTask [as invoke] (polyfills.js:9727)

解决方法

您要调用从 distanceTo 获取的对象的函数 JSON.prase,该对象没有函数 distanceTo。您首先需要创建一个标记或一个 LatLng 对象。

var fromLatLng = L.latLng(from);
var toLatLng = L.latLng(to);

var dis = fromLatLng.distanceTo(to);
console.log(dis);
,

答案如下:

    let latlng1 = L.latLng(from.lat,from.lng);
    let latlng2 = L.latLng(to.lat,to.lng);

    let distance = latlng1.distanceTo(latlng2) / 1000

    console.log(distance);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。