Lin_Ye_Fang_Huo/public/widgets/queryRoute/view.js

219 lines
6.5 KiB
JavaScript
Raw Normal View History

2023-07-18 09:04:15 +08:00
"use script"; //开发环境建议开启严格模式
2023-07-08 15:37:34 +08:00
//对应widget.js中MyWidget实例化后的对象
2023-07-18 09:04:15 +08:00
var thisWidget;
2023-07-08 15:37:34 +08:00
function initWidgetView(_thisWidget) {
2023-07-18 09:04:15 +08:00
thisWidget = _thisWidget;
2023-07-08 15:37:34 +08:00
//=================起点==================
//输入坐标
2023-07-18 09:04:15 +08:00
$("#inputStartPoint").change(function (e) {
var value = $(this).val();
value = value.replace(/ /g, "");
value = value.replace(//g, ",");
2023-07-08 15:37:34 +08:00
if (testJWD(value)) {
//表示输入的是经纬度
2023-07-18 09:04:15 +08:00
var jwd = value.split(",");
thisWidget.inputStartPoint(jwd[0], jwd[1]);
2023-07-08 15:37:34 +08:00
} else {
//表示输入的是地名
2023-07-18 09:04:15 +08:00
thisWidget.queryStartPoint(value);
2023-07-08 15:37:34 +08:00
}
2023-07-18 09:04:15 +08:00
});
2023-07-08 15:37:34 +08:00
//图上选点
2023-07-18 09:04:15 +08:00
$("#drawStartPoint").click(function () {
2023-07-08 15:37:34 +08:00
thisWidget.drawStartPoint(function (data) {
2023-07-18 09:04:15 +08:00
$("#inputStartPoint").val(data);
});
});
2023-07-08 15:37:34 +08:00
//=================终点==================
//输入坐标
2023-07-18 09:04:15 +08:00
$("#inputEndPoint").change(function (e) {
var value = $(this).val();
value = value.replace(/ /g, "");
value = value.replace(//g, ",");
2023-07-08 15:37:34 +08:00
// 104.102382 , 30.666908
if (testJWD(value)) {
//表示输入的是经纬度
2023-07-18 09:04:15 +08:00
var jwd = value.split(",");
thisWidget.inputEndPoint(jwd[0], jwd[1]);
2023-07-08 15:37:34 +08:00
} else {
//表示输入的是地名
2023-07-18 09:04:15 +08:00
thisWidget.queryEndPoint(value);
2023-07-08 15:37:34 +08:00
}
2023-07-18 09:04:15 +08:00
});
2023-07-08 15:37:34 +08:00
//图上选点
2023-07-18 09:04:15 +08:00
$("#drawEndPoint").click(function () {
2023-07-08 15:37:34 +08:00
thisWidget.drawEndPoint(function (data) {
2023-07-18 09:04:15 +08:00
$("#inputEndPoint").val(data);
});
});
2023-07-08 15:37:34 +08:00
//修改播放速度
2023-07-18 09:04:15 +08:00
$("#changeSpeed").change(function () {
var val = $(this).val();
thisWidget.resetSpeed(Number(val));
});
2023-07-08 15:37:34 +08:00
}
//坐标校验(判断是不是在中国国界内)
function testJWD(jwdStr) {
if (!jwdStr) {
2023-07-18 09:04:15 +08:00
return;
2023-07-08 15:37:34 +08:00
}
2023-07-18 09:04:15 +08:00
var test = /^([7-9][0-9]|1[0-3][0-9])(.[0-9]{1,6})?[,]([3-9]|[1-5][0-9])(.[0-9]{1,6})?$/;
return test.test(jwdStr);
2023-07-08 15:37:34 +08:00
}
//填充搜索结果 生成下拉框
function setHtmlInMCXD(data, type) {
if (!data || !type) {
2023-07-18 09:04:15 +08:00
return;
2023-07-08 15:37:34 +08:00
}
2023-07-18 09:04:15 +08:00
var pois = data.list;
var html = "";
2023-07-08 15:37:34 +08:00
if (pois.length < 1) {
2023-07-18 09:04:15 +08:00
return;
2023-07-08 15:37:34 +08:00
}
for (let i = 0; i < pois.length; i++) {
2023-07-18 09:04:15 +08:00
let item = pois[i];
let wgsLocation = item.x + "," + item.y;
html += ' <li wgsLocation="' + wgsLocation + '" class="mcxdClass">' + item.name + "</li>";
2023-07-08 15:37:34 +08:00
}
2023-07-18 09:04:15 +08:00
if (type == "start") {
let searchval_start = document.getElementById("searchval_start");
$(searchval_start).show().html(html);
2023-07-08 15:37:34 +08:00
} else {
2023-07-18 09:04:15 +08:00
let searchval_end = document.getElementById("searchval_end");
$(searchval_end).show().html(html);
2023-07-08 15:37:34 +08:00
}
2023-07-18 09:04:15 +08:00
var mcxdClasss = document.getElementsByClassName("mcxdClass");
2023-07-08 15:37:34 +08:00
for (var i = 0; i < mcxdClasss.length; i++) {
2023-07-18 09:04:15 +08:00
var ele = mcxdClasss[i];
2023-07-08 15:37:34 +08:00
//绑定下拉列表的点击事件
$(ele)
2023-07-18 09:04:15 +08:00
.off("click")
.on("click", function () {
$(this).parent().hide();
let wgsLocation = $(this).attr("wgsLocation").split(",");
let parentId = $(this).parent().attr("id");
if (parentId == "searchval_start") {
2023-07-08 15:37:34 +08:00
//表示起点坐标
2023-07-18 09:04:15 +08:00
thisWidget.inputStartPoint(wgsLocation[0], wgsLocation[1]);
let mcxd_input_text = document.getElementsByClassName("mcxd_start_text")[0];
$(mcxd_input_text).val($(this).text());
2023-07-08 15:37:34 +08:00
} else {
//表示终点坐标
2023-07-18 09:04:15 +08:00
thisWidget.inputEndPoint(wgsLocation[0], wgsLocation[1]);
let mcxd_input_text = document.getElementsByClassName("mcxd_end_text")[0];
$(mcxd_input_text).val($(this).text());
2023-07-08 15:37:34 +08:00
}
2023-07-18 09:04:15 +08:00
});
2023-07-08 15:37:34 +08:00
}
}
//清除搜索到的路线内容
function clearRouteContent() {
2023-07-18 09:04:15 +08:00
var routerContent = document.getElementById("routerContent");
2023-07-08 15:37:34 +08:00
if (routerContent) {
2023-07-18 09:04:15 +08:00
$(routerContent).html("");
2023-07-08 15:37:34 +08:00
}
}
function showRouteBox(res) {
2023-07-18 09:04:15 +08:00
var routeBox = document.getElementById("routeBox");
2023-07-08 15:37:34 +08:00
if (res == true) {
2023-07-18 09:04:15 +08:00
routeBox.style.display = "block";
2023-07-08 15:37:34 +08:00
} else {
2023-07-18 09:04:15 +08:00
routeBox.style.display = "none";
2023-07-08 15:37:34 +08:00
}
}
//widget里开始计算
function startCompute() {
2023-07-18 09:04:15 +08:00
faIndex = 1;
2023-07-08 15:37:34 +08:00
}
//展示路线信息
2023-07-18 09:04:15 +08:00
var faIndex = 1;
2023-07-08 15:37:34 +08:00
function showRouteInfo(id, path) {
if (!id || !path) {
2023-07-18 09:04:15 +08:00
return;
2023-07-08 15:37:34 +08:00
}
2023-07-18 09:04:15 +08:00
var content = "";
content += "全长" + (path.allDistance / 1000).toFixed(3) + "公里,";
content += "途经:";
var roadArr = path.road;
2023-07-08 15:37:34 +08:00
for (var index = 0; index < roadArr.length; index++) {
if (index == roadArr.length - 1) {
if (roadArr[index]) {
2023-07-18 09:04:15 +08:00
content += roadArr[index] + "。";
2023-07-08 15:37:34 +08:00
}
} else {
if (roadArr[index]) {
2023-07-18 09:04:15 +08:00
content += roadArr[index] + "、";
2023-07-08 15:37:34 +08:00
}
}
}
2023-07-18 09:04:15 +08:00
var htmlStr = "";
var startDH_html = '<input type="button" class="router_btn startDH" lineid="' + id + '" value="开始导航" />';
var startCK_html = '<input type="button" class="router_btn showLine" lineid="' + id + '" value="查看路线" />';
var sj_html = '<span class="span_sjgs"><input class="sjgs" lineid="' + id + '" type="checkbox">视角跟随</span>';
htmlStr += '<tr><td rowspan="2" class="lxh">' + faIndex + "</td>";
htmlStr += '<td><div class="fa">';
htmlStr += "<span>方案" + faIndex + "</span>";
htmlStr += startDH_html;
htmlStr += startCK_html;
htmlStr += sj_html;
htmlStr += "</div></td></tr>";
htmlStr += "<tr><td>";
htmlStr += '<p class="intro">' + content + "</p>";
htmlStr += "</td></tr>";
faIndex++;
var routerContent = document.getElementById("routerContent");
$(routerContent).append(htmlStr);
var showLines = document.getElementsByClassName("showLine");
var dhs = document.getElementsByClassName("startDH");
var sjgss = document.getElementsByClassName("sjgs");
2023-07-08 15:37:34 +08:00
$(showLines)
2023-07-18 09:04:15 +08:00
.off("click")
.on("click", function () {
var lineId = $(this).attr("lineid");
thisWidget.highLightLine(lineId);
});
2023-07-08 15:37:34 +08:00
$(dhs)
2023-07-18 09:04:15 +08:00
.off("click")
.on("click", function () {
var lineId = $(this).attr("lineid");
if ($(this).val() == "开始导航") {
thisWidget.startDH(lineId, isGS);
thisWidget.resetSpeed(Number($("#changeSpeed").val() || 120));
$(this).next().click(); //高亮显示线
$(this).next().next().show();
var isGS = $(this).siblings(".span_sjgs").find(".sjgs").prop("checked");
$(this).val("停止导航");
2023-07-08 15:37:34 +08:00
} else {
2023-07-18 09:04:15 +08:00
$(this).val("开始导航");
thisWidget.reset();
2023-07-08 15:37:34 +08:00
}
2023-07-18 09:04:15 +08:00
});
2023-07-08 15:37:34 +08:00
$(sjgss)
2023-07-18 09:04:15 +08:00
.off("click")
.on("click", function () {
var lineId = $(this).attr("lineid");
var checked = $(this).prop("checked");
2023-07-08 15:37:34 +08:00
if (checked) {
2023-07-18 09:04:15 +08:00
thisWidget.startGS(lineId, $(this));
2023-07-08 15:37:34 +08:00
} else {
2023-07-18 09:04:15 +08:00
thisWidget.removeTrack();
2023-07-08 15:37:34 +08:00
}
2023-07-18 09:04:15 +08:00
});
2023-07-08 15:37:34 +08:00
}
//重置按钮
function resetButton() {
2023-07-18 09:04:15 +08:00
var dhs = document.getElementsByClassName("startDH");
var sjgss = document.getElementsByClassName("sjgs");
$(sjgss).prop("checked", false);
$(dhs).val("开始导航");
2023-07-08 15:37:34 +08:00
}