如何在javascript的同一个函数中处理多种格式的数据
How to handle multiple formats for data in the same function in javascript
我有一个函数,它接受2对纬度和经度,并返回以m为单位的距离。
function distance(lat1, lon1, lat2, lon2){
var p = Math.PI/180;
var c = Math.cos;
var a = 0.5 - c((lat2 - lat1) * p)/2 +
c(lat1 * p) * c(lat2 * p) *
(1 - c((lon2 - lon1) * p))/2;
return 12742 * Math.asin(Math.sqrt(a)) * 1000; // 2 * R; R = 6371 km
}//Distance
(注意我没有创建这个函数,但从另一个问题得到了它)
我有纬度和经度的多个来源,我想知道如何处理它们。我尝试像这样使用||
var distanceFromTarget = distance(
target.latitude || target.lat || target.lat(),
target.longitude || target.lng || target.lng(),
current.latitude || current.lat || current.lat(),
current.longitude || current.lat || current.lng()
);
我想用这个函数来处理三种不同格式的输入
navigator.geolocation.x
返回格式为
的数据{latitude: 0000, longitude:0000}
返回
的插件{lat: 000, lng: 000}
和谷歌地图API,它返回一个复杂的对象的位置包含getter为lat和LNG像这样:
location = {lat(){return latitude}, lng(){return longitude}}
我如何同时处理这三个问题?我认为我上面有工作,但现在我很清楚,它不是。当位置为target.lat()
格式时,Distance返回NaN。如果有人能解释||
是如何工作的,那就太好了,因为我认为如果前一个对象未定义,它只会使用下一个对象。
真正的问题在于代码如何处理错误,比如如果原始的当前对象或目标对象未定义。同样在位置对象包含lat
和lng
lat()
或lng()的getter的情况下。然后目标。因此我使用
function atPosition(current, target){
if (typeof current === "undefined" || typeof target == "undefined") {
console.log("current or target position undefined.")
return
}
//if target is function and defined set property to return value of function.
if (typeof target === "object" && typeof target.lat === "function") {
target.lat = target.lat();
target.lng = target.lng();
}
//console.log(target);
//if currentPosition is within 25m of target return true
var distanceFromTarget = distance(
target.latitude || target.lat,
target.longitude || target.lng,
current.latitude || current.lat,
current.longitude || current.lng
);
console.log("Distance from target", distanceFromTarget);
if (distanceFromTarget <= 25) {
return true
} else {
return false
}
}
相关文章:
- AJAX调用后使用JavaScript处理数据(CakePHP 2.6.x)
- 如何处理数据视图中项目的鼠标点击
- 为什么我们需要为POST定义res.on('data'..,即使我们不处理数据
- 如何处理数据-Windows 8应用程序
- 替换不处理数据属性值
- 在 Javascript/Phonegap 上处理数据集
- 在这种情况下如何处理数据驱动的输入
- 微风/棱角:如何处理数据
- WebRTC是否为您处理数据包丢失和数据包接收确认等,或者您是否需要为此编写自己的解决方案
- 如何将多行输出传输到另一个 php 文件以处理数据
- encodeURI在二进制字符串上处理数据
- 在 Emscripten'd C++ 程序中处理数据后,如何修复尝试从 Web worker 发回数据时的“内存不足”错
- 防止 WebSQL 数据库中的 SQL 注入?(如何处理数据中的报价?
- 是否有任何方法可以查明localForage/indexedDb是否正在处理数据
- 如何使用AngularJS处理数据的递归呈现
- 使用array.map或array.filter处理数据
- 使用javascript处理数据,并使用Angular.JS以HTML显示
- 使用JSTL处理数据
- Opencpu不能处理数据.表在R
- 我如何处理数据过滤上的一个按钮点击D3.js