<!DOCTYPE html>
|
<html>
|
<head>
|
<meta charset="utf-8">
|
<title>入库值仓</title>
|
<meta name="viewport"
|
content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
|
<link rel="stylesheet" href="./css/mui.min.css" />
|
<link rel="stylesheet" href="./css/mui.picker.min.css" />
|
<style>
|
.mui-bar-nav {
|
background: #245ca7;
|
-webkit-box-shadow: none;
|
box-shadow: none;
|
}
|
|
.mui-title {
|
color: #FFFFFF;
|
}
|
|
.mui-icon-back:before, .mui-icon-left-nav:before {
|
color: #FFFFFF;
|
}
|
|
.ckzcgl_title {
|
display: block;
|
background: #fff;
|
border-bottom: 1px #eee solid;
|
padding: 5px;
|
box-sizing: border-box;
|
}
|
|
.ckzcgl_title p {
|
/* line-height: 30px; */
|
display: block;
|
margin-right: 20px;
|
color: #245ca7;
|
}
|
|
.ckzcgl_tt {
|
display: block;
|
padding: 5px 15px;
|
box-sizing: border-box;
|
margin-bottom: 0px;
|
}
|
|
.ckzcgl_pic {
|
display: flex;
|
justify-content: space-between;
|
padding: 0 15px;
|
box-sizing: border-box;
|
}
|
|
.ckzcgl_pic .pic {
|
flex: 1;
|
}
|
|
.ckzcgl_pic .pic img {
|
width: 100%;
|
height: auto;
|
}
|
|
.ckzcgl_pic .btns {
|
width: 80px;
|
align-self: center;
|
text-align: right;
|
}
|
|
.ckzcgl_pic .btns button {
|
background: #245ca7;
|
border: 0px;
|
color: #fff;
|
font-size: 14px;
|
width: 70px;
|
height: 44px;
|
}
|
|
.ckzcgl_btns {
|
display: flex;
|
justify-content: space-between;
|
padding: 5px;
|
box-sizing: border-box;
|
}
|
|
.ckzcgl_btns button {
|
height: 44px;
|
font-size: 14px;
|
width: 100%;
|
}
|
|
.ckzcgl_btns button {
|
color: #fff;
|
}
|
|
.ckzcgl_btns button:first-child {
|
background: #ff6355;
|
}
|
|
.ckzcgl_btns button:last-child {
|
background: #245ca7;
|
}
|
|
.dis {
|
background: #bdbdbd !important;
|
color: #555 !important;
|
}
|
|
.ckzcgl_text {
|
display: block;
|
padding: 0 15px;
|
box-sizing: border-box;
|
}
|
|
.ckzcgl_input {
|
display: flex;
|
padding: 5px 0px;
|
}
|
|
.ckzcgl_input .ckzcgl_input_box {
|
flex: 1;
|
display: flex;
|
}
|
|
.ckzcgl_input .ckzcgl_input_box span {
|
align-self: center;
|
padding: 0 0 0 10px;
|
text-align: right;
|
font-size: 14px;
|
}
|
|
.ckzcgl_input .ckzcgl_input_box input {
|
height: 40px;
|
line-height: 40px;
|
flex: 1;
|
font-size: 14px;
|
}
|
|
.ckzcgl_input small {
|
width: 95px;
|
align-self: center;
|
padding-left: 5px;
|
font-size: 14px;
|
}
|
|
.ad {
|
display: block;
|
height: 226px;
|
}
|
|
.ad img {
|
width: 100%;
|
height: 100%;
|
}
|
</style>
|
</head>
|
<body>
|
<header class="mui-bar mui-bar-nav">
|
<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
|
<h1 class="mui-title">入库值仓</h1>
|
</header>
|
<div class="mui-content">
|
<div class="ad" id="video">
|
<img id="videoImg" src="./images/spad0.png" />
|
<!-- 使用播放器播放 -->
|
<!-- <easy-player id="easyPlayer" style="display: none;" live="true" show-custom-button="true" auto-play="true" muted="true"></easy-player> -->
|
|
<!-- 使用IFrame播放 -->
|
<!-- <iframe id="iframePlayer" src="" style="margin: 5px, 0;" width="100%" height="100%" frameborder="no" allowfullscreen></iframe> -->
|
</div>
|
<div class="ckzcgl_title" style="width: 100%;">
|
<p>保管员:<span id="cname"></span>
|
<button style="float: right;background-color: #245ca7;color: #FFFFFF; padding: 10px;"
|
onclick="selectCamera()">选摄像头</button>
|
</p>
|
<p>卸粮仓库:<span id="depotName"></p>
|
<p>车辆:<span id="plateNum"></span></p>
|
</div>
|
|
<p class="ckzcgl_tt">车辆/仓库照片</p>
|
<div class="ckzcgl_pic">
|
<div class="pic">
|
<img id="img1" src="./images/spad.png">
|
</div>
|
<div class="btns">
|
<button id="btn1" class="btn dis" onclick="snapPic('1')">抓拍</button>
|
</div>
|
</div>
|
|
<p class="ckzcgl_tt">卸粮过程照片</p>
|
<div class="ckzcgl_pic">
|
<div class="pic">
|
<img id="img2" src="./images/spad.png">
|
</div>
|
<div class="btns">
|
<button id="btn2" class="btn dis" onclick="snapPic('2')">抓拍</button>
|
</div>
|
</div>
|
|
<div class="ckzcgl_btns">
|
<button id="btn_start" class="btn mr-1" onclick="toHandle('start')">开始卸粮</button>
|
<button id="btn_end" class="btn ml-1 dis" onclick="toHandle('end')">结束卸粮</button>
|
</div>
|
|
<div class="ckzcgl_text">
|
<p>请在确认车辆信息和目标仓房无误后点击开始卸粮按钮开始值仓!</p>
|
<p>选择摄像头远程抓拍完成后点击结束卸粮按钮结束值仓!</p>
|
</div>
|
</div>
|
<script src="./js/mui.js"></script>
|
<script src="./js/mui.picker.min.js"></script>
|
<script src="./js/jquery.min.js"></script>
|
<script src="./js/echarts.min.js"></script>
|
<script src="./js/EasyPlayer-element.min.js"></script>
|
|
<script type="text/javascript" charset="utf-8">
|
//初始化,页面使用mui.back返回父页面时进行页面刷新
|
mui.init({
|
beforeback: function() {
|
//获得父页面的webview
|
var list = plus.webview.currentWebview().opener();
|
//触发父页面的自定义事件(refresh),从而进行刷新
|
mui.fire(list, 'refresh');
|
//返回true,继续页面关闭逻辑
|
return true;
|
}
|
});
|
var x_pi = 3.14159265358979324 * 3000.0 / 180.0;
|
var pi = 3.1415926535897932384626;
|
var a = 6378245.0;
|
var ee = 0.00669342162296594323;
|
var url; //接口路径
|
var keepUrl; //接口路径
|
var uploadUrl; //图片上传路径
|
var cname; //登录用户的名称
|
var depotName; //仓库名称
|
var plateNum; //车牌
|
var fileName1; //照片1名称
|
var fileName2; //照片2名称
|
var base64Img1; //照片1信息
|
var base64Img2; //照片2信息
|
var handleStart; //值仓开始时间
|
var videoList = null; //视频设备集合
|
var playAddr = null;
|
var cameraData = []; //视频设备集合
|
var cameraDto;
|
var timer;
|
var longitude = null; //百度地图(BD-09)经度
|
var latitude = null; //百度地图(BD-09)纬度
|
|
//获取摄像头列表
|
var dataCamera = {
|
"interfaceId": "5601",
|
"sign": "10501",
|
"outId": "10501",
|
"reqDateTime": new Date(),
|
"tokenAuth": "",
|
"data": {}
|
};
|
//查看值仓详情请求参数
|
var data1 = {
|
"interfaceId": "5208",
|
"sign": "10208",
|
"outId": "10208",
|
"reqDateTime": new Date(),
|
"tokenAuth": "",
|
"data": {
|
"id": "",
|
"intelCard": ""
|
}
|
};
|
//入库值仓提交请求参数
|
var data2 = {
|
"interfaceId": "5205",
|
"sign": "10208",
|
"outId": "10208",
|
"reqDateTime": new Date(),
|
"tokenAuth": "",
|
"data": {
|
"type": "start",
|
"id": "",
|
"fileName1": "",
|
"fileName2": "",
|
"longitude": "",
|
"latitude": "",
|
"handleType": "2"
|
}
|
};
|
|
//获取视频播放地址
|
var videoData = {
|
"interfaceId": "5602",
|
"sign": "10602",
|
"outId": "10602",
|
"reqDateTime": new Date(),
|
"tokenAuth": "",
|
"data": {
|
"cameraId": "",
|
"playType": "",
|
"playIframe": ""
|
}
|
};
|
|
//请求抓拍参数
|
var snapData = {
|
"interfaceId": "5211",
|
"sign": "10211",
|
"outId": "10211",
|
"reqDateTime": new Date(),
|
"tokenAuth": "",
|
"data": {
|
"playAddr": "",
|
"plateNum": "",
|
"bizType": "IN"
|
}
|
};
|
|
mui.plusReady(function() {
|
//获取传递的参数
|
var curr = plus.webview.currentWebview();
|
var user = JSON.parse(localStorage.getItem('user'));
|
//参数赋值
|
videoData.tokenAuth = user.tokenAuth;
|
dataCamera.tokenAuth = user.tokenAuth;
|
snapData.tokenAuth = user.tokenAuth;
|
data1.tokenAuth = user.tokenAuth;
|
data1.data.id = curr.recordId;
|
data2.tokenAuth = user.tokenAuth;
|
data2.data.id = curr.recordId;
|
url = user.url + "/api-phone/gateway";
|
keepUrl = user.url + "/api-phone/keep-alive";
|
uploadUrl = user.url + "/api-phone/upload-img";
|
cname = user.cname;
|
getDetail();
|
getCameraList();
|
})
|
|
//获取单子详细信息
|
function getDetail() {
|
//发送请求
|
mui.ajax(url, {
|
type: "POST",
|
dataType: "json",
|
crossDomain: true,
|
contentType: "application/json;charset=utf-8",
|
data: JSON.stringify(data1),
|
success: function(result) {
|
if (result.code == "0000") {
|
//赋值
|
depotName = result.data.depotName;
|
plateNum = result.data.plateNum;
|
fileName1 = result.data.fileName1;
|
fileName2 = result.data.fileName2;
|
base64Img1 = result.data.base64Img1;
|
base64Img2 = result.data.base64Img2;
|
handleStart = result.data.handleStart;
|
//渲染
|
render();
|
} else {
|
mui.alert(result.msg, '提示', ["确定"], function() {}, "div");
|
}
|
},
|
error: function() {
|
mui.alert('系统繁忙,请重试!', '提示', ["确定"], function() {}, "div");
|
}
|
})
|
}
|
|
//页面渲染
|
function render() {
|
//渲染保管员、仓库、车辆信息
|
$("#cname").html(cname);
|
$("#depotName").html(depotName);
|
$("#plateNum").html(plateNum);
|
//照片渲染
|
if (base64Img1) {
|
$('#img1').attr('src', base64Img1);
|
}
|
if (base64Img2) {
|
$('#img2').attr('src', base64Img2);
|
}
|
//拍照及卸粮按钮渲染
|
if (handleStart) {
|
$("#btn1").removeClass("dis");
|
$("#btn2").removeClass("dis");
|
$("#btn_start").addClass("dis");
|
}
|
if (fileName1 && fileName2) {
|
$("#btn_end").removeClass("dis");
|
}
|
}
|
|
//获取视频设备列表信息
|
function getCameraList() {
|
//发送请求获取视频设备
|
mui.ajax(url, {
|
type: "POST",
|
dataType: "json",
|
crossDomain: true,
|
contentType: "application/json;charset=utf-8",
|
data: JSON.stringify(dataCamera),
|
success: function(result) {
|
if (result.code == "0000") {
|
videoList = result.data;
|
if (videoList != null && videoList.length > 0) {
|
$.each(videoList, function(index, item) {
|
cameraData.push({
|
value: index,
|
text: item.name
|
})
|
})
|
}
|
}
|
}
|
})
|
}
|
|
//选择摄像头
|
function selectCamera() {
|
mui.ajax(url, {
|
type: "POST",
|
dataType: "json",
|
crossDomain: true,
|
contentType: "application/json;charset=utf-8",
|
data: JSON.stringify(data1),
|
success: function(result) {
|
if (result.code == '0000') {
|
if (result.data.handleStart != null) {
|
if (cameraData != null && cameraData.length > 0) {
|
var groupPicker = new mui.PopPicker();
|
|
groupPicker.setData(cameraData);
|
|
groupPicker.show(function(items) {
|
showVideo(items[0].value);
|
});
|
} else {
|
mui.alert('未获取到摄像头信息,请刷新后重试!', '提示', ["确定"], function() {}, "div");
|
}
|
} else {
|
mui.toast("请先点击开始卸粮!");
|
}
|
} else {
|
mui.alert(result.msg, '提示', ["确定"], function() {}, "div");
|
}
|
},
|
error: function() {
|
mui.alert('系统繁忙,请重试!', '提示', ["确定"], function() {}, "div");
|
}
|
})
|
}
|
|
//播放视频
|
function showVideo(index) {
|
wt = plus.nativeUI.showWaiting("请稍后...")
|
videoData.data.cameraId = videoList[index].id
|
videoData.data.playType = videoList[index].playType
|
videoData.data.playIframe = "Y";
|
mui.ajax(url, {
|
type: "POST",
|
dataType: "json",
|
crossDomain: true,
|
contentType: "application/json;charset=utf-8",
|
data: JSON.stringify(videoData),
|
success: function(result) {
|
if (result.code == "0000") {
|
//关闭转圈等待框
|
wt.close();
|
var camera = result.data;
|
cameraDto = result.data;
|
playAddr = camera.playAddr;
|
|
var html = "";
|
//播放视频
|
if(camera.playIframe){
|
|
html = '<iframe id="iframePlayer" src="' + camera.playIframe +
|
'" style="margin: 5px, 0;" width="100%" height="100%" frameborder="no"></iframe>';
|
$('#video').html(html);
|
mui.toast("获取视频流成功,请点击抓拍!");
|
}else if(camera.playAddr){
|
|
html = '<easy-player id="easyPlayer" video-url="' + camera.playAddr +
|
'" live="true" show-custom-button="true" auto-play="true" muted="true"></easy-player>';
|
$('#video').html(html);
|
mui.toast("获取视频流成功,请点击抓拍!");
|
//定时器-保活直播
|
if (timer) {
|
clearInterval(timer);
|
}
|
timer = setInterval(function() {
|
keepAlive();
|
}, 15 * 1000);
|
}else{
|
mui.alert('未获取到当前摄像头播放信息!!', '提示', ["确定"], function() {}, "div");
|
}
|
|
} else {
|
//关闭转圈等待框
|
wt.close();
|
mui.alert(result.msg, '提示', ["确定"], function() {}, "div");
|
}
|
},
|
error: function() {
|
//关闭转圈等待框
|
wt.close();
|
mui.alert('系统繁忙,请重试!', '提示', ["确定"], function() {}, "div");
|
}
|
})
|
};
|
|
function keepAlive() {
|
var data = {
|
playType: cameraDto.playType,
|
sn: cameraDto.sn,
|
ip: cameraDto.ipIn,
|
msg: Math.random()
|
};
|
mui.ajax(keepUrl, {
|
type: "POST",
|
dataType: "json",
|
crossDomain: true,
|
contentType: "application/json;charset=utf-8",
|
data: JSON.stringify(data),
|
success: function(result) {},
|
error: function() {}
|
})
|
}
|
|
//值仓
|
function toHandle(tag) {
|
if (tag == 'start') { //开始卸粮
|
//开始卸粮时,先再次请求查看单子是否是在值仓状态
|
mui.ajax(url, {
|
type: "POST",
|
dataType: "json",
|
crossDomain: true,
|
contentType: "application/json;charset=utf-8",
|
data: JSON.stringify(data1),
|
success: function(result) {
|
if (result.code == "0000") {
|
//判断单子是否在值仓状态
|
if (result.data.progress == "HANDLE") {
|
//判断单子是否开始进行值仓
|
if (result.data.handleStart == null) {
|
data2.data.type = tag;
|
//发送请求,开始值仓
|
mui.ajax(url, {
|
type: "POST",
|
dataType: "json",
|
crossDomain: true,
|
contentType: "application/json;charset=utf-8",
|
data: JSON.stringify(data2),
|
success: function(result) {
|
mui.toast("开始卸粮,请选择摄像头抓拍!");
|
//重新请求获取单子详情并渲染
|
getDetail();
|
},
|
error: function() {
|
mui.alert('开始值仓提交失败,请重新操作!', '提示', ["确定"], function() {},
|
"div");
|
}
|
})
|
} else {
|
mui.toast("已开始卸粮!");
|
}
|
} else {
|
//如果不在值仓状态,给出提示信息,不进行提交
|
mui.alert("该单子不在值仓状态,不能进行值仓!", '提示', ["确定"], function() {}, "div");
|
}
|
} else {
|
mui.alert(result.msg, '提示', ["确定"], function() {}, "div");
|
}
|
},
|
error: function() {
|
mui.alert('系统繁忙,请重试!', '提示', ["确定"], function() {}, "div");
|
}
|
})
|
} else { //结束卸粮
|
|
//结束卸粮时,再次请求查看单子是否在值仓状态
|
mui.ajax(url, {
|
type: "POST",
|
dataType: "json",
|
crossDomain: true,
|
contentType: "application/json;charset=utf-8",
|
data: JSON.stringify(data1),
|
success: function(result) {
|
if (result.code == '0000') {
|
//判断单子是否在值仓状态
|
if (result.data.progress == "HANDLE") {
|
if (result.data.handleStart != null) {
|
if (fileName1 == null || fileName2 == null) {
|
mui.toast("请先选择摄像头抓拍!");
|
} else {
|
data2.data.longitude = longitude;
|
data2.data.latitude = latitude;
|
data2.data.type = tag;
|
data2.data.fileName1 = fileName1;
|
data2.data.fileName2 = fileName2;
|
mui.ajax(url, {
|
type: "POST",
|
dataType: "json",
|
crossDomain: true,
|
contentType: "application/json;charset=utf-8",
|
data: JSON.stringify(data2),
|
success: function(result) {
|
if (result.code == '0000') {
|
mui.toast("值仓完成!");
|
//返回上一页
|
mui.back();
|
} else {
|
mui.alert(result.msg, '提示', ["确定"],
|
function() {}, "div");
|
}
|
},
|
error: function() {
|
mui.alert('系统繁忙,请重试!', '提示', ["确定"], function() {},
|
"div");
|
}
|
})
|
}
|
} else {
|
mui.toast("请先点击开始卸粮,并选择摄像头抓拍!");
|
}
|
} else {
|
//如果不在值仓状态,给出提示信息,不进行提交
|
mui.alert("该单子不在值仓状态,不能进行值仓!", '提示', ["确定"], function() {}, "div");
|
}
|
|
} else {
|
mui.alert(result.msg, '提示', ["确定"], function() {}, "div");
|
}
|
},
|
error: function() {
|
mui.alert('系统繁忙,请重试!', '提示', ["确定"], function() {}, "div");
|
}
|
})
|
}
|
}
|
|
//抓拍
|
function snapPic(typeNum) {
|
//获取定位信息
|
getLatLon();
|
if(latitude == null || longitude == null){
|
return;
|
}
|
if(!playAddr){
|
mui.alert("请先选择摄像头!", '提示', ["确定"], function() {}, "div");
|
return;
|
}
|
|
//开始抓拍
|
var wt = plus.nativeUI.showWaiting();
|
snapData.data.playAddr = playAddr;
|
snapData.data.plateNum = plateNum;
|
mui.ajax(url, {
|
type: "POST",
|
dataType: "json",
|
crossDomain: true,
|
contentType: "application/json;charset=utf-8",
|
data: JSON.stringify(snapData),
|
success: function(result) {
|
//关闭转圈等待框
|
wt.close();
|
if (result.code == '0000') {
|
var snap = result.data;
|
if(snap.base64Img && snap.fileName){
|
mui.toast("抓拍成功!");
|
if (typeNum == "1") {
|
$('#img1').attr('src', snap.base64Img);
|
fileName1 = snap.fileName;
|
}
|
if (typeNum == "2") {
|
$('#img2').attr('src', snap.base64Img);
|
fileName2 = snap.fileName;
|
}
|
//判断2张图片是否全部上传成功,成功则修改结束卸粮按钮样式
|
if (fileName1 && fileName2) {
|
$("#btn_end").removeClass("dis");
|
}
|
}else{
|
mui.alert("抓拍失败!", '提示', ["确定"], function() {}, "div");
|
}
|
} else {
|
mui.alert(result.msg, '提示', ["确定"], function() {}, "div");
|
}
|
},
|
error: function() {
|
//关闭转圈等待框
|
wt.close();
|
mui.alert('系统繁忙,请重试!', '提示', ["确定"], function() {}, "div");
|
}
|
})
|
};
|
|
/*---------------获取定位信息-------------------*/
|
function getLatLon() {
|
plus.geolocation.getCurrentPosition(showLocation, function(e) {
|
mui.alert("获取定位信息失败,请先打开定位开关!", '提示', ["确定"], function() {}, "div");
|
}, {
|
geocode: true
|
});
|
}
|
|
//处理定位后的信息
|
function showLocation(r) {
|
var bd09 = "";
|
if (r.coordsType == 'gcj02') {
|
//国测局坐标转百度坐标
|
bd09 = gcj02_To_Bd09(r.coords.longitude, r.coords.latitude);
|
} else if (r.coordsType == 'wgs84') {
|
//wgs84转百度坐标
|
bd09 = wgs84_To_Bd09(r.coords.longitude, r.coords.latitude);
|
} else {
|
bd09 = r.coords.longitude + "," + r.coords.latitude
|
}
|
var location = bd09.split(",");
|
longitude = location[0];
|
latitude = location[1];
|
}
|
//国测局坐标(即火星坐标gcj02) 转化为百度坐标(即BD-09)
|
function gcj02_To_Bd09(gcj_lon, gcj_lat) {
|
var x = gcj_lon,
|
y = gcj_lat;
|
var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * pi);
|
var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * pi);
|
var bd_lon = z * Math.cos(theta) + 0.0065;
|
var bd_lat = z * Math.sin(theta) + 0.006;
|
return bd_lon + "," + bd_lat;
|
}
|
//地球坐标(即wgs84) 转化为百度坐标(即BD-09)
|
function wgs84_To_Bd09(wgs_lon, wgs_lat) {
|
//第一次转换(wgs84转gcj02)
|
var dlat = transformlat(wgs_lon - 105.0, wgs_lat - 35.0);
|
var dlng = transformlon(wgs_lon - 105.0, wgs_lat - 35.0);
|
var radlat = wgs_lat / 180.0 * pi;
|
var magic = Math.sin(radlat);
|
magic = 1 - ee * magic * magic;
|
var sqrtmagic = Math.sqrt(magic);
|
dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * pi);
|
dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * pi);
|
var mglat = wgs_lat + dlat;
|
var mglng = wgs_lon + dlng;
|
|
//第二次转换(gcj02转bd09)
|
var z = Math.sqrt(mglng * mglng + mglat * mglat) + 0.00002 * Math.sin(mglat * x_pi);
|
var theta = Math.atan2(mglat, mglng) + 0.000003 * Math.cos(mglng * x_pi);
|
var bd_lon = z * Math.cos(theta) + 0.0065;
|
var bd_lat = z * Math.sin(theta) + 0.006;
|
return bd_lon + "," + bd_lat;
|
}
|
|
function transformlat(lat, lon) {
|
var ret = -100.0 + 2.0 * lon + 3.0 * lat + 0.2 * lat * lat + 0.1 * lon * lat + 0.2 * Math.sqrt(Math.abs(lon));
|
ret += (20.0 * Math.sin(6.0 * lon * pi) + 20.0 * Math.sin(2.0 * lon * pi)) * 2.0 / 3.0;
|
ret += (20.0 * Math.sin(lat * pi) + 40.0 * Math.sin(lat / 3.0 * pi)) * 2.0 / 3.0;
|
ret += (160.0 * Math.sin(lat / 12.0 * pi) + 320 * Math.sin(lat * pi / 30.0)) * 2.0 / 3.0;
|
return ret;
|
}
|
|
function transformlon(lat, lon) {
|
var ret = 300.0 + lon + 2.0 * lat + 0.1 * lon * lon + 0.1 * lon * lat + 0.1 * Math.sqrt(Math.abs(lon));
|
ret += (20.0 * Math.sin(6.0 * lon * pi) + 20.0 * Math.sin(2.0 * lon * pi)) * 2.0 / 3.0;
|
ret += (20.0 * Math.sin(lon * pi) + 40.0 * Math.sin(lon / 3.0 * pi)) * 2.0 / 3.0;
|
ret += (150.0 * Math.sin(lon / 12.0 * pi) + 300.0 * Math.sin(lon / 30.0 * pi)) * 2.0 / 3.0;
|
return ret;
|
}
|
|
</script>
|
</body>
|
</html>
|