地图相关

来源:互联网 发布:java数字金字塔代码 编辑:程序博客网 时间:2024/05/28 06:04
/** * author: cjbi * date: 2017/5/25 * mail: cjbi@outlook.com *  mui 公共js封装 *///jQuery自定义插件/** *  mui 折叠/展开 内容 */(function ($) {    //设置参数    var setting;    $.fn.muiCollapse = function (opts) {        //继承的默认参数        setting = $.extend({            //折叠时显示的文字            collapseText: '折叠内容',            //展开时显示的文字            expandText: '展开内容',        }, opts || {});        //展开/收起 药店信息        $(this).on('click', function (e) {            $(this).parent('.mui-collapse').addClass("selected");            var $selected = $('.mui-collapse.selected');            $selected.find('.mui-collapse-model').css({                display: function (index, value) {                    var $collapseText = $selected.find('.mui-collapse-text');                    var $collapseIcon = $selected.find('.mui-collapse-icon').find('.mui-icon');                    //如果是展示的就隐藏,否则就展示                    if (value == "block") {                        $collapseText.text(setting.expandText);                        $collapseIcon.removeClass('mui-icon-arrowup');                        $collapseIcon.addClass('mui-icon-arrowdown');                        return "none";                    } else {                        $collapseText.text(setting.collapseText);                        $collapseIcon.removeClass('mui-icon-arrowdown');                        $collapseIcon.addClass('mui-icon-arrowup');                        return "block";                    }                }            });            $(this).parent('.mui-collapse').removeClass("selected");        });    };})(jQuery);/** * dataurl转换成Blob的方法 created by chengjinbao * @param dataurl * @returns {*} */function dataURLtoBlob(dataurl) {    var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],        bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);    while (n--) {        u8arr[n] = bstr.charCodeAt(n);    }    return new Blob([u8arr], {type: mime});}/** * 百度地图选择地址插件,提供搜索功能 * @param callback 回调函数,返回poi地址结果集 */function initMap(callback) {    $('body').append('<div class="bdPoint"></div>');    BDmap(function (rs) {        callback(rs);    });    /**     * 渲染地图     * @param callback 回调函数     * @author 程金宝     */    function BDmap(callback) {        /* $('body').append('<div class="BaiduPoint"></div>');*/        // 百度地图API功能        var map = new BMap.Map('map', {enableMapClick: false});       // new一个百度地图        map.enableScrollWheelZoom();                                  // 启用滚轮放大缩小        map.enableInertialDragging();        map.enableContinuousZoom();        var geolocation = new BMap.Geolocation(); //使用地理位置定位        geolocation.getCurrentPosition(function (r) {            if (this.getStatus() == BMAP_STATUS_SUCCESS) {                //var mk = new BMap.Marker(r.point);                //map.addOverlay(mk);                map.panTo(r.point);  // panTo()方法将让地图平滑移动至新中心点                map.centerAndZoom(r.point, 18);                                 // 定位中心点,放大倍数            }            else {                console.log('failed' + this.getStatus());            }        }, {enableHighAccuracy: true});        //关于状态码        //BMAP_STATUS_SUCCESS   检索成功。对应数值“0”。        //BMAP_STATUS_CITY_LIST 城市列表。对应数值“1”。        //BMAP_STATUS_UNKNOWN_LOCATION  位置结果未知。对应数值“2”。        //BMAP_STATUS_UNKNOWN_ROUTE 导航结果未知。对应数值“3”。        //BMAP_STATUS_INVALID_KEY   非法密钥。对应数值“4”。        //BMAP_STATUS_INVALID_REQUEST   非法请求。对应数值“5”。        //BMAP_STATUS_PERMISSION_DENIED 没有权限。对应数值“6”。(自 1.1 新增)        //BMAP_STATUS_SERVICE_UNAVAILABLE   服务不可用。对应数值“7”。(自 1.1 新增)        //BMAP_STATUS_TIMEOUT   超时。对应数值“8”。(自 1.1 新增)        // 添加带有定位的导航控件        var navigationControl = new BMap.NavigationControl({            // 靠左上角位置            anchor: BMAP_ANCHOR_TOP_LEFT,            // LARGE类型            type: BMAP_NAVIGATION_CONTROL_LARGE,            // 启用显示定位            enableGeolocation: true        });        map.addControl(navigationControl);        // 添加定位控件        var geolocationControl = new BMap.GeolocationControl();        geolocationControl.addEventListener("locationSuccess", function (e) {            // 定位成功事件            var address = '';            address += e.addressComponent.province;            address += e.addressComponent.city;            address += e.addressComponent.district;            address += e.addressComponent.street;            address += e.addressComponent.streetNumber;            console.log("当前定位地址为:" + address);        });        geolocationControl.addEventListener("locationError", function (e) {            // 定位失败事件            console.log(e.message);        });        map.addControl(geolocationControl);        // 添加地图移动事件       /* map.addEventListener('moveend', function () {            checkPoint(map.getCenter());        });*/        //添加地图移动后事件        map.addEventListener("moving", showCurrentPoi);        function showCurrentPoi() {            $('input').blur();            var center = map.getCenter();            var local = new BMap.LocalSearch(map, {                renderOptions: {selectFirstResult: true},                onSearchComplete: function (results) {                    if (local.getStatus() == BMAP_STATUS_SUCCESS) {                        setMarker(results);                        callback(results);                    }                }            });            var myGeo = new BMap.Geocoder();            myGeo.getLocation(center, function (result) {                if (result) {                    // local.search(result.address);                    local.searchNearby('药店', result.point, 1000);                }            });        }        /*  用户坐标转换为具体位置 --start */        function checkPoint(pt) {            var geoc = new BMap.Geocoder();            var point = new BMap.Point(pt.lng, pt.lat);            geoc.getLocation(pt, function (rs) {                var addComp = rs.addressComponents;                 /!* 返回的数据 *!/                 var address = {                 point: pt,                 province: addComp.province,                 city: addComp.city,                 district: addComp.district,                 street: addComp.street,                 streetNumber: addComp.streetNumber,                 addressMsg: addComp.district + "  " + addComp.street + "  " + addComp.streetNumber                 };                /*                 callback(address);*/            })        }        /*  用户坐标转换为具体位置 --end */        //自动完成        var ac = new BMap.Autocomplete(    //建立一个自动完成的对象            {                "input": "search",                "location": map            });        var myValue;        ac.addEventListener("onconfirm", function (e) {    //鼠标点击下拉列表后的事件            var _value = e.item.value;            myValue = _value.province + _value.city + _value.district + _value.street + _value.business;            /*alert("1:"+_value.province+"2:"+_value.city+"3:"+_value.district+"4:"+_value.street+"5:"+_value.business);*/           /* callback(myValue);*/            setPlace();        });        function setMarker(results) {            //清除地图上所有覆盖物            map.clearOverlays();            var url = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAA6CAYAAADybArcAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Mzg0MTdENzUzMjNCMTFFNzkxN0U4QjFCNzc4MkNCNjkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Mzg0MTdENzYzMjNCMTFFNzkxN0U4QjFCNzc4MkNCNjkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozODQxN0Q3MzMyM0IxMUU3OTE3RThCMUI3NzgyQ0I2OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozODQxN0Q3NDMyM0IxMUU3OTE3RThCMUI3NzgyQ0I2OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuYniwMAAAksSURBVHja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';            var myIcon = new BMap.Icon(url, new BMap.Size(36, 42), {                //图标所用的图片的大小,此功能的作用等同于CSS中的background-size属性。可用于实现高清屏的高清效果                imageSize:new BMap.Size(36, 42),            });            for (var i = 0; i < results.getCurrentNumPois(); i++) {                var point = results.getPoi(i).point;                var title = results.getPoi(i).title;                var marker = new BMap.Marker(point, {icon: myIcon});        // 创建标注                map.addOverlay(marker);                     // 将标注添加到地图中                var label = new BMap.Label(title, { offset: new window.BMap.Size(20, -10) });                label.setStyle({border: "1px solid rgb(223, 223, 223)" });                marker.setLabel(label);                // marker.addEventListener("click", function(e){                //     console.log(e);                //     console.log(this);                // });            }        }        function setPlace() {            function myFun() {                var pp = local.getResults().getPoi(0).point;    //获取第一个智能搜索的结果                //直接返回结果                callback(local.getResults());                // setMarker(local.getResults())  //添加标注                map.centerAndZoom(pp, 18);                setTimeout(function () {                    checkPoint(map.getCenter());                    $('input').blur();                }, 100);            }            var local = new BMap.LocalSearch(map, { //智能搜索                onSearchComplete: myFun            });            local.search(myValue);        }    }}
原创粉丝点击