Javascript 如何传递2个参数并返回最近对象的第三个参数
我无法创建一个采用2个参数(纬度和经度)并返回与输入值最接近的城市的方法。 我做了一个方法来找到经度上最近的(FindNearestLongtudeTicty),我做了一个方法来找到纬度上最近的(FindNearestLatitudeTicty)。但是,创建一个返回与两个输入值最接近的一个城市的方法是行不通的经纬度。(findNearestCity方法不起作用,它总是返回亚特兰大)。 请帮我做那个方法。如果你需要所有的条件,你可以在代码后面看到它们Javascript 如何传递2个参数并返回最近对象的第三个参数,javascript,Javascript,我无法创建一个采用2个参数(纬度和经度)并返回与输入值最接近的城市的方法。 我做了一个方法来找到经度上最近的(FindNearestLongtudeTicty),我做了一个方法来找到纬度上最近的(FindNearestLatitudeTicty)。但是,创建一个返回与两个输入值最接近的一个城市的方法是行不通的经纬度。(findNearestCity方法不起作用,它总是返回亚特兰大)。 请帮我做那个方法。如果你需要所有的条件,你可以在代码后面看到它们 function CityMap(str)
function CityMap(str) {
function CityMapRecording(str) {
[this.city, this.latitude, this.longitude] = str.split(" ,");
}
this.list = [];
str.split(";").forEach(row => {
this.list.push(new CityMapRecording(row));
});
}
CityMap.prototype.findNearestLatitudeCity = function (i) {
return this.list.filter(function (x) {
return x.latitude >= i || x.latitude <= i;
}).sort(function (x, y) {
return Math.abs(x.latitude - i) - Math.abs(y.latitude - i);
})[0];
}
CityMap.prototype.findNearestLongitudeCity = function (j) {
return this.list.filter(function (k) {
return k.longitude >= j || k.longitude <= j;
}).sort(function (k, l) {
return Math.abs(k.longitude - j) - Math.abs(l.longitude - j);
})[0];
}
CityMap.prototype.findNearestCity = function (j, x) {
return this.list.filter(function (k) {
return k.longitude >= j || k.longitude <= j && k.latitude >=x || k.latitude <=x;
}).sort(function (k, l) {
return Math.abs(k.longitude - j) - Math.abs(l.longitude - j) && Math.abs(k.latitude - x) - Math.abs(l.latitude - x);
})[0];
}
var objCityMap = new CityMap("Nashville, TN ,36.17 ,-86.78;New York, NY ,40.71 ,-74.00;Atlanta, GA ,33.75 ,-84.39;Denver, CO ,39.74 ,-104.98;Seattle, WA ,47.61 ,-122.33;Los Angeles, CA ,34.05 ,-118.24;Memphis, TN , 35.15 ,-90.05");
console.log(objCityMap.list);
console.log(objCityMap.findNearestLatitudeCity(35.15).city)
console.log(objCityMap.findNearestLongitudeCity(-86).city)
console.log(objCityMap.findNearestCity(42, -122).city)
功能城市地图(str){
功能城市预编码(str){
[this.city,this.latitude,this.longitude]=str.split(“,”);
}
this.list=[];
str.split(“;”).forEach(行=>{
this.list.push(新城市预编码(行));
});
}
CityMap.prototype.FindNearestlationDecity=函数(i){
返回此.list.filter(函数(x){
返回x.latitude>=i | | x.latitude=j | | k.longitude=j | | k.longitude=x | | k.latitude事实是,纬度和经度差不能仅仅通过简单的减法得到距离
有一个众所周知的公式来计算两个坐标之间的距离,我从中复制了这个公式
您可以使用此公式在第一次操作中使用map
在列表中添加distance
字段,然后在第二次操作中使用distance
对列表进行排序,然后获取第一个元素,该元素将是离给定坐标最近的城市
像这样,
CityMap.prototype.findNearestCity = function (lat, lan) {
return this.list.map(function (k) {
k.distance = distance(k.latitude,k.longitude,lat,lan);
return k;
}).sort(function (k, l) {
return k.distance < l.distance ? -1 : 1;
})[0];
}
CityMap.prototype.findNearestCity=函数(lat、lan){
返回此.list.map(函数(k){
k、 距离=距离(k纬度、k经度、纬度、局域网);
返回k;
}).sort(函数(k,l){
返回k距离
->“javascript最近位置经纬度”
CityMap.prototype.findNearestCity = function (lat, lan) {
return this.list.map(function (k) {
k.distance = distance(k.latitude,k.longitude,lat,lan);
return k;
}).sort(function (k, l) {
return k.distance < l.distance ? -1 : 1;
})[0];
}