第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Angular httpClient 使用 Longitude Latitude Haversine

Angular httpClient 使用 Longitude Latitude Haversine

PHP
動漫人物 2023-05-26 17:34:18
我在 JSON 文件中有用戶列表[  {      "id": 1,      "first_name": "Maurise",      "last_name": "Shieldon",      "latitude": 34.003135,      "longitude": -117.7228641  },  {      "id": 2,      "first_name": "Bendix",      "last_name": "Halgarth",      "latitude": -2.9623869,      "longitude": 104.7399789  },  {      "id" 3,      "first_name": "Meghan",      "last_name": "Southall",      "latitude": "15.45033",      "longitude": "44.12768"  },  {      "id": 4,      "first_name": "Sidnee",      "last_name": "Silwood",      "latitude": -26.94087,      "longitude": 29.24905  },  {      "id": 5,      "first_name": "Rosita",      "last_name": "Ferrulli",      "latitude": 33.5719791,      "longitude": -84.3396421  }]我正在使用 Haversine 公式來計算距離,這樣我只能獲得某些 LAT 和 LONG 值的用戶,這種方法在我的api.service.ts班級中。   getDistanceFromLatLon(lat1: number, lon1: number, lat2: number, lon2: number): number {    var deg2Rad = deg => {      return deg * Math.PI / 180;    }    var r = 3959; // Radius of the earth in miles    var dLat = deg2Rad(lat2 - lat1);    var dLon = deg2Rad(lon2 - lon1);    var a =      Math.sin(dLat / 2) * Math.sin(dLat / 2) +      Math.cos(deg2Rad(lat1)) * Math.cos(deg2Rad(lat2)) *      Math.sin(dLon / 2) * Math.sin(dLon / 2);    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));    var d = r * c; // Distance in miles    return d;  }然后在我的app.component.ts文件中,我可以調(diào)用 JSON 數(shù)組,它data.json從上面的用戶列表中為我提供文件中所有用戶的列表。getUsers() {this.httpClient.get('/assets/users.json').pipe(map(data => data as Array<Users>))      .subscribe(result => { console.log(result)}在我從我的 JSON 文件中收到所有用戶的列表之后。result我正在嘗試通過該方法運行 JSON數(shù)組getDistanceFromLatLon,以便只有具有 LONDON_LAT和 的用戶LONDON_LONG才能顯示 //Latitude and longitude of London  LONDON_LAT = 51.509865;  LONDON_LONG = -0.118092;  miles;通過 .getDistanceFromLatLon我的編譯后this.UsersByRadius = result是空的,我沒有得到任何用戶。我基本上是想在我的角度應(yīng)用程序中復(fù)制這個PHP 應(yīng)用程序。任何幫助都感激不盡。
查看完整描述

1 回答

?
HUWWW

TA貢獻1874條經(jīng)驗 獲得超12個贊

  1. Angular SPA 通常在客戶端生成。所以所有的數(shù)學(xué)計算(單個除法運算都有很大的開銷,更不用說所有的三角函數(shù))在處理大型數(shù)組集時都會重載。您應(yīng)該考慮在服務(wù)器端進行。

  2. 您正在檢索一個數(shù)組。所以你需要遍歷它們中的每一個來調(diào)用函數(shù)。

getUsers() {

  this.httpClient.get('/assets/users.json').pipe(

    map(data => data as Array<Users>)

  ).subscribe(result => { 

    console.log(result);

    result.forEach(item => {

      const distance = this.apiService.getDistanceFromLatLon(item['latitude'], item['longitude'], this.LONDON_LAT, this.LONDON_LONG);

      if (distance <= this.miles) {

        this.UsersByRadius.push({

          id: item['id'],   

          first_name: item['first_name'],

          last_name: item['last_name'],   

          latitude: item['latitude'],   

          longitude: item['longitute'],

          city: 'London'

        });

      }

    });

  });

}


查看完整回答
反對 回復(fù) 2023-05-26
  • 1 回答
  • 0 關(guān)注
  • 146 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號