| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- /**
- * 地图相关
- * */
- var map, curentlatlng, startHeart = null,
- markersArray = [];
- var indexFlag = 1;
- $(function() {
- getLocation(); //获取当前位置
- });
- //获取当前位置
- function getLocation() {
- var geolocation = new qq.maps.Geolocation("26KBZ-YBJRO-3RPWW-SUEYL-K2KKQ-BTBYL", "myappV1.00");
- var options = {
- timeout: 8000
- };
- geolocation.getLocation(showPosition, showErr, options)
- }
- function showErr(err) {
- alert("定位失败!" + err);
- };
- function showPosition(position) {
- //alert('精确度:' + position.accuracy + '\n方式:' + position.type + '\n' + position.addr + '附近\n' + position.nation + position.province + position.city + position.addr + '附近');
- var lat = position.lat;
- var lng = position.lng;
- curentlatlng = new qq.maps.LatLng(lat, lng); //当前地理位置
- var repairlatLng = new qq.maps.LatLng(getRepairlatLng().lat, getRepairlatLng().lng);
- //返回在起终点连线上位于给定比例的点坐标。比例值fraction范围为0~1。
- var centerlatLng = qq.maps.geometry.spherical.interpolate(curentlatlng, repairlatLng, 0.5);
- //创建地图
- map = new qq.maps.Map(document.getElementById("container"), {
- center: centerlatLng,
- zoom: 12,
- zoomControl: true, //设置缩放控制启用
- zoomControlOptions: { //设置缩放控件的样式状态
- style: qq.maps.ZoomControlStyle.SMALL
- },
- //如果为 true,在初始化地图时不会清除地图容器内的内容
- noClear: true,
- //用作地图 div 的背景颜色。当用户进行平移时,如果尚未载入图块,则显示此颜色。仅在地图初始化时,才能设置此选项
- backgroundColor: "#96bffd",
- });
- //设置当前位置的marker标记
- var anchor = new qq.maps.Point(6, 6),
- size = new qq.maps.Size(50, 76),
- origin = new qq.maps.Point(0, 0),
- icon = new qq.maps.MarkerImage('../img/myself.png', size, origin, anchor);
- var marker = new qq.maps.Marker({
- icon: icon,
- map: map,
- position: curentlatlng,
- });
- // var label = new qq.maps.Label({
- // position: curentlatlng,
- // map: map,
- // content:'我的位置'
- // });
- //
- // label.setStyle({
- // color:"#33a1d6",fontSize:"12px",fontWeight:"bold",border: 'none',background: 'transparent'
- // });
- //实时路况图层
- var layer = new qq.maps.TrafficLayer();
- layer.setMap(map);
- startHeart = setInterval(getRepairs, 2000);
- }
- //获取维修工位置添加标记
- function getRepairs() {
- indexFlag += 1;
- var repairlatLng = new qq.maps.LatLng(getRepairlatLng().lat, getRepairlatLng().lng); //维修工位置这个位置需要每隔 30s 动态获取
- //计算两点间的距离
- var distance = qq.maps.geometry.spherical.computeDistanceBetween(curentlatlng, repairlatLng);
- //alert("维修工距离我:" + Math.ceil(distance) + "米");
- $('<li>维修工距离我:' + Math.ceil(distance) + '米</li>').appendTo($('#logs'));
- //删除标记
- deleteOverlays();
- //给维修工添加位置标记
- getRepairPoint(repairlatLng);
- //当两者距离小于50米视为到了
- if(Math.ceil(distance) < 50) {
- clearInterval(startHeart);
- alert('维修工到了。。');
- }
- }
- //获取维修工位置
- function getRepairlatLng() {
- var rlatLngs = {};
- var a = 0.0013444999999999633 * indexFlag;
- var b = 0.0015996333333333722 * indexFlag;
- rlatLngs.lat = 34.756616 + a;
- rlatLngs.lng = 113.649643 - b;
- return rlatLngs;
- }
- //给维修工添加位置标记(自定义标记,添加文本标记,划线)
- function getRepairPoint(latLng) {
- var anchor = new qq.maps.Point(6, 6),
- size = new qq.maps.Size(50, 76),
- origin = new qq.maps.Point(0, 0),
- icon = new qq.maps.MarkerImage('../img/worker.png', size, origin, anchor);
- var marker = new qq.maps.Marker({
- icon: icon,
- map: map,
- position: latLng
- });
- // var label = new qq.maps.Label({
- // position: latLng,
- // map: map,
- // offset: new qq.maps.Size(14, 58),
- // content: '<div></div>'
- // });
- // label.setStyle({
- // width: "14px",
- // height: "14px",
- // borderRadius: '50%',
- // background: '#067ceb'
- // });
- //划线
- // var polyline = new qq.maps.Polyline({
- // path: [curentlatlng, latLng],
- // strokeColor: '#39a8de',
- // strokeWeight: 1,
- // editable: false,
- // map: map
- // });
- markersArray.push(marker);
- //markersArray.push(label);
- // markersArray.push(polyline);
- }
- //删除覆盖物
- function deleteOverlays() {
- if(markersArray) {
- for(i in markersArray) {
- markersArray[i].setMap(null);
- }
- markersArray.length = 0;
- }
- }
- //地址和经纬度之间进行转换服务(地址 --》 坐标地址);
- function getPointByAddr() {
- var address = '中国,北京,海淀区,海淀大街38号';
- var geocoder = new qq.maps.Geocoder();
- //对指定地址进行解析
- geocoder.getLocation(address);
- //设置服务请求成功的回调函数
- geocoder.setComplete(function(result) {
- alert("坐标地址为: " + result.detail.location);
- });
- //若服务请求失败,则运行以下函数
- geocoder.setError(function() {
- alert("出错了,请输入正确的地址!!!");
- });
- }
- //地址和经纬度之间进行转换服务(坐标地址 --》 地址 );
- function getAddrByPoint() {
- var lat = 39.98174;
- var lng = 116.30631;
- var latLng = new qq.maps.LatLng(lat, lng);
- var geocoder = new qq.maps.Geocoder();
- //调用获取位置方法
- geocoder.getAddress(latLng);
- //设置服务请求成功的回调函数
- geocoder.setComplete(function(result) {
- alert("详细地址为: " + result.detail.address);
- });
- //若服务请求失败,则运行以下函数
- geocoder.setError(function() {
- alert("出错了,请输入正确的地址!!!");
- });
- }
|