AngularJS|基于地理位置(lat,long)对JSON进行排序
AngularJS | Sorting JSON based on geolocation (lat, long)
尝试根据设备的地理位置对JSON文件进行排序。
JSON文件:
jsonCallback(
[
{
"codelocatie":"AL0008",
"codecontainer":"GAL0008444",
"gemeente":"Almelo",
"straatnaam":"Bornerbroeksestraat",
"omschrijving":"bij Aldi",
"model":"BG 3000",
"soort":"GLAS",
"gps-x":"52.3497120",
"gps-y":"6.66140500"
},
{
"codelocatie":"AL0010",
"codecontainer":"GAL0010005",
"gemeente":"Almelo",
"straatnaam":"Bornsestraat 48",
"omschrijving":"park.pl. Plusmarkt",
"model":"OG 4000",
"soort":"GLAS",
"gps-x":"52.3512100",
"gps-y":"6.66672100"
},
{
"codelocatie":"AL0010",
"codecontainer":"KAL0010003",
"gemeente":"Almelo",
"straatnaam":"Bornsestraat 48",
"omschrijving":"park.pl. Plusmarkt",
"model":"OG 5000",
"soort":"KVM",
"gps-x":"52.3512200",
"gps-y":"6.66672900"
},
{
"codelocatie":"AL0010",
"codecontainer":"KAL0010004",
"gemeente":"Almelo",
"straatnaam":"Bornsestraat 48",
"omschrijving":"park.pl. Plusmarkt",
"model":"OG 5000",
"soort":"KVM",
"gps-x":"52.3512200",
"gps-y":"6.66672900"
}
]
);
我将设备的地理位置存储在分区中
这就是我目前获取JSON数据的方式
.controller('afvalbakController' ,['$scope', '$http',
function afvalbakController($scope, $http) {
$.ajax({
type : "GET",
contentType: "application/json; charset=utf-8",
async: false,
url : 'http://www.lans.ink/TABLE_3.json?callback=?',
dataType: "jsonp",
jsonpCallback: 'jsonCallback',
success: function(data) {
$scope.contents = data;
},
error: function(e) {
console.log(e.message);
}
})
}])
它目前只抓住第一个,然后是第二个等等。
我希望它按地理位置排序,首先是最近的,但到目前为止运气不佳。这能实现吗?如果是,如何?
在locations数组上执行循环,检查每个点到地理定位点之间的距离并对其进行排序。这里有一个检查2个点之间距离的函数。
function distance(lat1, lon1, lat2, lon2, unit) {
var radlat1 = Math.PI * lat1/180;
var radlat2 = Math.PI * lat2/180;
var radlon1 = Math.PI * lon1/180;
var radlon2 = Math.PI * lon2/180;
var theta = lon1-lon2;
var radtheta = Math.PI * theta/180;
var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
dist = Math.acos(dist);
dist = dist * 180/Math.PI;
dist = dist * 60 * 1.1515;
if (unit=="K") { dist = dist * 1.609344; }
if (unit=="N") { dist = dist * 0.8684; }
return dist;
}
相关文章:
- 将两个Json提要合并为一个,并按时间排序
- 在不同的javascript数组中对json响应进行排序
- 如何从网页中对具有多个不同参数的JSON进行排序
- 对包含对象的JSON对象进行排序
- Sencha Ext JS排序标准以字符串而不是JSON的形式发送
- 排序和操作json对象,javascript
- 将 json 数组的一部分分别排序到同一数组的其他部分
- 如何在节点中进行 Json 对象排序.js
- 存储多个Json对象,然后对其进行排序
- 对JSON数组对象进行排序
- 使用javascript/JQM对JSON对象进行排序并附加到html中
- 使用jquery对JSON进行排序
- 如何在JavaScript中使用主节点文本对json对象进行排序
- JSON,按播放的会话总数排序,输出前3名
- 如何迭代无序的JSON数据并排序为数组
- 从JSON对列表进行自定义排序
- 如何根据不同排序顺序的多个值对json对象进行排序
- 跳过 Angular JS 中的 ng-repeat JSON 排序
- 嵌套对象JSON排序JavaScript
- Json排序问题