Wex5调用百度地图进行范围签到
来源:互联网 发布:软件项目实施步骤 编辑:程序博客网 时间:2024/05/17 23:30
没想过自己也会写博客,这要感谢起步,学习Wex5有几个月了,都是看别人的案例来做东西,基本都是差不多的,也自己根据百度地图做了一写小小的改动,在上大学的时候听别人说可以范围签到,当时羡慕的很,没想到现在自己做了一个感觉还可以的范围签到,也算是学了几个月的小成果吧,现在分享出来,大家参考参考。功能介绍:使用者需要在指定的范围(蓝色的圈圈)内签到,否者会签到失败。写完自后感觉超级好,这是我写的第一篇博客,我一直写下去的。
这个是做出来的效果图
前置条件:
1)、我们要成功调用百度地图
2)、获取手机的当前定位
(注:上图中绿颜色的圈圈是设置的签到范围,红颜色的是自己当前位置)
1、判断你的签到点是否在你定位的范围内,我设置了多个签到的地点,代码如下;
function isInsidePolygon(pt, poly) {
for (var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)
((poly[i].lat <= pt.lat && pt.lat < poly[j].lat) || (poly[j].lat <= pt.lat && pt.lat < poly[i].lat))
&& (pt.lng < (poly[j].lng - poly[i].lng) * (pt.lat - poly[i].lat) / (poly[j].lat - poly[i].lat) + poly[i].lng) && (c = !c);
return c;
}
2、签到也要根据时间签到,如果当天签到了没有签退,第二天就签到不了的问题,我是这样解决的
var dateTime = new Date();
var newDateTime = justep.Date.increase(dateTime, 0, ‘d’);
var qiantime = cookie.getCookie(“qiantime”);
if (newDateTime = qiantime||newDateTime > qiantime) {
qian = 1
}
if (qiantime != null) {
var dateTime = new Date();
qiantime = justep.Date.increase(dateTime, 0, ‘d’);
} else {
var s = this.comp(“input1”).val()
var qiantime = justep.Date.fromString(s, ‘yyyy/MM/dd’);// 转换成日期
qiantime = justep.Date.increase(qiantime, 1, ‘d’);
cookie.addCookie(‘qiantime’, qiantime, “/”);// 判断签到签退
}
5、代码功能:根据定位的范围来进行签到。如果不在指定的地方签到会签到不了。整体代码如下;
define(function(require) {
var
require(“$UI/system/lib/cordova/cordova”);
require(“cordova!cordova-plugin-geolocation”);// 地图
var Model = function() { this.callParent();};var cookie = justep.Util;var RealName = cookie.getCookie("RealName");var Subordinate = cookie.getCookie("Subordinate");var ID = cookie.getCookie("ID");var qian = cookie.getCookie("qian");var jindu = "";var weidu = "";var mPoint = "";var circle = "";var didian;var bool=",";Model.prototype.modelLoad = function(event) { var me = this; // 获取设备地点保存到签到地点里面 if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(successCallback, handleLocationError, { maximumAge : 60000, timeout : 10000, enableHighAccuracy : true }); } else { justep.Util.hint("对不起,您的浏览器不支持html5定位"); } function handleLocationError(error) { switch (error.code) { case 0: justep.Util.hint("获取位置信息出错!"); w break; case 1: justep.Util.hint("您设置了阻止该页面获取位置信息!"); break; case 2: justep.Util.hint("浏览器无法确定您的位置!"); break; case 3: justep.Util.hint("获取位置信息超时!"); break; } } var benren; function successCallback(position) { window._baiduInit1 = function() { var geoc = new BMap.Geocoder();// 创建地图 geoc.getLocation(new BMap.Point(position.coords.longitude, position.coords.latitude), function(rs) { jindu = position.coords.longitude;// 获取当前经度 weidu = position.coords.latitude;// 获取当前纬度 var id = me.getIDByXID("allmap");// 获取divID渲染成百度地图 var map = new BMap.Map(id); mPoint = new BMap.Point(jindu, weidu);// 当前经纬度显示地图 map.centerAndZoom(mPoint, 14);// 缩放度 map.enableScrollWheelZoom(true);// 放大、缩小 var marker = new BMap.Marker(mPoint); // 创建标注 map.addOverlay(marker); // 将标注添加到地图中 var addComp = rs.addressComponents; benren = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber;// 定位详细地址 $("#" + me.getIDByXID("span10")).text(benren); // 定位信息赋值 for (var i = 0; i <= didian.length; i++) { AddCircle(didian[i].Longitude.split(',')[0], didian[i].Longitude.split(',')[1]); } function AddCircle(a, b) { circle = new BMap.Circle(new BMap.Point(a, b), 50, { fillColor : "blue", strokeWeight : 0, fillOpacity : 0, strokeOpacity : 0 });// 显示签到点的位置 map.addOverlay(circle); bool = isInsidePolygon(mPoint, circle.getPath()) + ","; } function isInsidePolygon(pt, poly) { for (var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i) ((poly[i].lat <= pt.lat && pt.lat < poly[j].lat) || (poly[j].lat <= pt.lat && pt.lat < poly[i].lat)) && (pt.lng < (poly[j].lng - poly[i].lng) * (pt.lat - poly[i].lat) / (poly[j].lat - poly[i].lat) + poly[i].lng) && (c = !c); return c; } }); }; require([ '自行填写' ], function() { if (!(window.BMap && window.BMap.apiLoad)) { window._baiduInit1(); } }); }};/** ********获取签到的点************** */Model.prototype.CheckArdressCustomRefresh = function(event) { if (qian == "1") { if (Subordinate == 14 || Subordinate == 13 || Subordinate == 15 || Subordinate == 16 || Subordinate == 17 || Subordinate == 18 || Subordinate == 20 || Subordinate == 26 || Subordinate == 27 || Subordinate == 28 || Subordinate == 29 || Subordinate == 30 || Subordinate == 31 || Subordinate == 32 || Subordinate == 33 || Subordinate == 34 || Subordinate == 35 || Subordinate == 53) { didian = [ { "Longitude" : "119.037641,29.600619" } ]; } else { var CheckArdress = this.comp("CheckArdress") $.ajax({ "type" : 'post', "dataType" : 'json', "data" : "{'RealName':'" + RealName + "'}", "contentType" : 'application/json;charset=utf-8', "url" : haikanweburl + "WebServiceInner.asmx/Aederss", "async" : false, "success" : function(data) { if (data.isOk == 1) { didian = data.retMsg.ds; } else { justep.Util.hint('暂无排班') } }, "error" : function(XMLHttpRequest, textStatus, errorThrown) { justep.Util.hint('网络不佳') } }); } } if (qian == "2") { if (Subordinate == 14 || Subordinate == 13 || Subordinate == 15 || Subordinate == 16 || Subordinate == 17 || Subordinate == 18 || Subordinate == 20 || Subordinate == 26 || Subordinate == 27 || Subordinate == 28 || Subordinate == 29 || Subordinate == 30 || Subordinate == 31 || Subordinate == 32 || Subordinate == 33 || Subordinate == 34 || Subordinate == 35 || Subordinate == 53) { didian = [ { "Longitude" : "119.037641,29.600619" } ]; } else { var CheckArdress = this.comp("CheckArdress"); $.ajax({ "type" : 'post', "dataType" : 'json', "data" : "{'RealName':'" + RealName + "'}", "contentType" : 'application/json;charset=utf-8', "url" : haikanweburl + "WebServiceInner.asmx/Bederss", "async" : false, "success" : function(data) { if (data.isOk == 1) { didian = data.retMsg.ds; } else { justep.Util.hint('暂无排班') } }, "error" : function(XMLHttpRequest, textStatus, errorThrown) { justep.Util.hint('网络不佳') } }); } }};/** *****签到******* */Model.prototype.button1Click = function(event) { // 签到 var dateTime = new Date(); var newDateTime = justep.Date.increase(dateTime, 0, 'd'); var qiantime = cookie.getCookie("qiantime"); if (newDateTime = qiantime||newDateTime > qiantime) { qian = 1 } if (qiantime != null) { var dateTime = new Date(); qiantime = justep.Date.increase(dateTime, 0, 'd'); } else { var s = this.comp("input1").val() var qiantime = justep.Date.fromString(s, 'yyyy/MM/dd');// 转换成日期 qiantime = justep.Date.increase(qiantime, 1, 'd'); cookie.addCookie('qiantime', qiantime, "/");// 判断签到签退 } if (qian == "2") { justep.Util.hint("您已签到") } else { var str = bool.split(','); for (var i = 0; i < str.length; i++) { if (str[i] == "true") { bool = true; } } if (bool == true) { var para = "{'SigninTime' : '" + this.comp("input1").val() + "','SigninSite' :'" + this.getElementByXid("span10").innerHTML + "','Name':'" + RealName + "','SignoutTime':'','SignoutSite':'','Signinout':'签到'}"; $.ajax({ "type" : 'post', "dataType" : 'json', "data" : para, "contentType" : 'application/json;charset=utf-8', "url" : haikanweburl + "WebServiceInner.asmx/SignIn", "async" : false, "success" : function(data) { if (data.isOk === 1) { justep.Util.hint(data.retMsg); qian = "2" cookie.addCookie('qian', qian, "/");// 判断签到签退 cookie.addCookie('qiantime', qiantime, "/");// 判断 window.location.href = "./Default.w" } if (data.isOk === 2) { justep.Util.hint(data.retMsg); } if (data.isOk === 0) { justep.Util.hint(data.retMsg); } } }); } else { justep.Util.hint("请到指定地点签到") } }};/** *******签退********** */Model.prototype.button2Click = function(event) { // 签退 if (qian == "3") { } if (qian == "1") { justep.Util.hint("请先签到") }else { var str1 = bool.split(','); for (var i = 0; i < str1.length; i++) { if (str1[i] == "true") { bool = true; } } if (bool == true) { var para = "{'SigninTime' : '','SigninSite' :'','Name':'" + RealName + "','SignoutTime':'" + this.comp("input1").val() + "','SignoutSite':'" + this.getElementByXid("span10").innerHTML + "','Signinout':'签退'}"; $.ajax({ "type" : 'post', "dataType" : 'json', "data" : para, "async" : false, "contentType" : 'application/json;charset=utf-8', "url" : haikanweburl + "WebServiceInner.asmx/SignIn", "success" : function(data) { if (data.isOk === 1) { justep.Util.hint(data.retMsg); qian = "3" cookie.addCookie('qian', qian, "/");// 判断签到签退 window.location.href = "./Default.w" } if (data.isOk === 2) { justep.Util.hint(data.retMsg); } if (data.isOk === 0) { justep.Util.hint(data.retMsg); } } }); } else { justep.Util.hint("请到指定地点签退") } }};/** *******签到签退时间设定********* */Model.prototype.SignoutTimeCustomRefresh = function(event) { var SignoutTime = this.comp("SignoutTime") var me = this; $.ajax({ "type" : 'post', "dataType" : 'json', "data" : "{'RealName':'" + RealName + "'}", "contentType" : 'application/json;charset=utf-8', "url" : haikanweburl + "WebServiceInner.asmx/SignoutTime", "success" : function(data) { if (data.isOk == 1) { SignoutTime.loadData(data.retMsg.ds); $("#" + me.getIDByXID("span2")).text(data.retMsg.ds[0].Attendancetime); $("#" + me.getIDByXID("span12")).text(data.retMsg.ds[0].Closingtime) } }, "error" : function(XMLHttpRequest, textStatus, errorThrown) { justep.Util.hint('签') } });};Model.prototype.backBtnClick = function(event) { justep.Shell.closePage();};
- Wex5调用百度地图进行范围签到
- 利用WeX5集成百度地图
- 指定位置签到-百度地图
- 百度地图调用app进行路径规划
- 百度地图SDK_范围搜索
- 百度地图显示指定范围的地图
- HTML5调用百度地图API进行地理定位实例
- HTML5调用百度地图API进行地理定位实例
- Geolocation---HTML5调用百度地图API进行地理定位实例
- HTML5调用百度地图API进行地理定位实例
- 75.百度地图的URL分享--iOS 调用百度地图App进行导航
- 全国各省市县级边界范围及其中心城区查询(调用百度地图)
- 调用百度地图
- 调用百度地图
- 调用百度地图实例
- 调用百度地图
- js调用百度地图
- 调用百度地图APP
- 条件注释判断浏览器<!--[if IE]><!--[if !IE]>
- 串口知识总结……
- iOS导出ipa包的四个选项的意义
- MySQL InnoDB索引介绍及优化(初学者)
- 新手要想学好Linux系统就必须做好这四件事情。
- Wex5调用百度地图进行范围签到
- 【DAY.2】PHP数据结构与算法_排序_冒泡排序
- 学习python的第一天
- Android消息角标
- 4-1 Percolate Up and Down (20分)
- Ubuntu16.04 搜狗输入法切换中英文
- Linux_CentOS下调整home和根分区大小
- Python 单元测试:assertTrue 和assertFalse 的真假
- 借助YunOS ,开发技术、运营能力大幅提升