夜鹰教程网-程序员的加油站
· 设为首页· 加入收藏    
你好,欢迎来到夜鹰网!【 去购买教程】
 当前位置: 文章中心 >> Css3.0_css2.0_html5
利用百度地图API制作的区域多条件搜索插件
夜鹰教程网 来源:www.yyjcw.com 日期:2017-11-3 11:10:09
利用百度地图API制作的区域多条件搜索插件

使用百度地图制作的区域多条件搜索插件

5.png

//百度地图操作
//author:pengyaou
function MapAPIHandler() {
    this.currentBdMap = null//百度地图
    this.currentCenterPoint = null//中心点坐标
    this.currentName; //中心点名称
    this.currentCenterImg; //中心点图标
    this.currentLevel; //地图级数
    this.currentDistance;
    this.flag = false;
    this.currentCircle;
    //初始化
    this.InitializeComponent = function(longitude, latitude, centerName, mapLevel) {
        this.currentLevel = mapLevel;
        this.currentName = centerName;
        this.currentCenterImg = "point.png";
        this.SetCenter(longitude, latitude, mapLevel);
        Search(this.currentDistance);
    }
 
    //传入中心点经度,纬度,地图切片级数,创建百度地图实例,并且指定中心点位置
    this.SetCenter = function(longitude, latitude, mapLevel) {
        //实例化百度地图,指定中心点
        this.currentBdMap = new BMap.Map("Map", {
           /* minZoom: mapLevel,
            maxZoom: mapLevel*/
        });
        this.currentLevel = mapLevel;
        this.currentBdMap.enableScrollWheelZoom(true);
        this.currentCenterPoint = new BMap.Point(longitude, latitude);
        this.currentBdMap.centerAndZoom(this.currentCenterPoint, mapLevel);
        this.currentDistance = this.MapDistance() /3;
        this.CreatCenter(this.currentCenterPoint, this.currentCenterImg);
    }
    this.MoveToCenter=function(){
        this.currentBdMap.panTo(this.currentCenterPoint);
    }
    //创建地图中心点标注图标
    this.CreatCenter = function(centerPoint, ico, txt) {
        var myIcon = new BMap.Icon(ico, new BMap.Size(32, 32));
        var marker2 = new BMap.Marker(this.currentCenterPoint, {
            icon: myIcon
        }); // 创建标注
        var label = new BMap.Label(this.currentName, {
            offset: new BMap.Size(20, -10)
        }); // 创建标注
        label.setStyle({
            borderColor: "#808080",
            color: "#333",
            fontSize: "12px",
            height: "20px",
            lineHeight: "20px",
            fontFamily: "微软雅黑"
        });
        marker2.setLabel(label);
        this.currentBdMap.addOverlay(marker2);
    }
 
    //根据关键字检索周边信息
    this.searchNear = function(keyWords, locationName) {
        var local = new BMap.LocalSearch(this.currentBdMap, {
            renderOptions: {
                map: this.currentBdMap
            }
        });
        local.searchNearby(keyWords, locationName);
    }
 
    //根据关键字检索周边信息
    this.SearchNewrDistance = function(keyWords, distance) {
        this.currentDistance = distance;
        var local = new BMap.LocalSearch(this.currentBdMap, {
            renderOptions: {
                map: this.currentBdMap,
                autoViewport: true
            }
        });
        local.searchNearby(keyWords, this.currentCenterPoint, distance);
 
        if (this.flag == false) {
            this.flag = true;
            var circle = new BMap.Circle(this.currentCenterPoint, this.currentDistance, {
                strokeColor: "#0075C7",
                strokeWeight: 1,
                fillColor: "#333",
                fillOpacity: 0.2,
                strokeOpacity: 0.8
            }); //创建圆
            this.currentBdMap.addOverlay(circle);
        }
    }
    //圆形范围关键字搜索
    this.SearchCircle = function(keyWords) {
        if (this.flag == false) {
            this.flag = true;
            this.currentCircle = new BMap.Circle(this.currentCenterPoint, this.currentDistance, {
            strokeColor: "#0075C7",
            strokeWeight: 1,
            fillColor: "blue",
            fillOpacity: 0.2,
            strokeOpacity:0.5
            }); //创建圆
            this.currentBdMap.addOverlay(this.currentCircle);
        }
        var locals = new BMap.LocalSearch(this.currentBdMap, {
            renderOptions: {
                map: this.currentBdMap,
                autoViewport: false
            }
        });
        var bounds = getSquareBounds(this.currentCircle.getCenter(), this.currentCircle.getRadius(), this.currentBdMap);
        locals.searchInBounds(keyWords, bounds);
 
        function getSquareBounds(centerPoi, r, map) {
            var a = Math.sqrt(2) * r; //正方形边长
            mPoi = getMecator(centerPoi, map);
            var x0 = mPoi.x,
            y0 = mPoi.y;
 
            var x1 = x0 + a / 2,
            y1 = y0 + a / 2; //东北点
            var x2 = x0 - a / 2,
            y2 = y0 - a / 2; //西南点
            var ne = getPoi(new BMap.Pixel(x1, y1), map),
            sw = getPoi(new BMap.Pixel(x2, y2), map);
            return new BMap.Bounds(sw, ne);
 
        }
        //根据球面坐标获得平面坐标。
        function getMecator(poi, map) {
            return map.getMapType().getProjection().lngLatToPoint(poi);
        }
        //根据平面坐标获得球面坐标。
        function getPoi(mecator, map) {
            return map.getMapType().getProjection().pointToLngLat(mecator);
        }
    }
 
    //获取当前地图的显示范围(距离)
    this.MapDistance = function() {
        var bs = this.currentBdMap.getBounds(); //获取可视区域
        var bssw = bs.getSouthWest(); //可视区域左下角
        var bsne = bs.getNorthEast(); //可视区域右上角
        return this.GetDistance(bssw, bsne);
    }
 
    //获取两点距离
    this.GetDistance = function(pointA, pointB) {
        return this.currentBdMap.getDistance(pointA, pointB).toFixed(0);
    }
 
    //清除所有遮罩层,同时生成中心点图标
    this.ClearAll = function() {
        this.flag = false;
        this.currentBdMap.clearOverlays();
        this.CreatCenter(this.currentCenterPoint, this.currentCenterImg);
    }
}
复制链接 网友评论 收藏本文 关闭此页
上一条: 什么样的网站适合做自适应  下一条: div块怎样实现瀑布流布局
夜鹰教程网成立于2008年,目前已经运营了将近 13 年,发布了大量关于 html5/css3/C#/asp.net/java/python/nodejs/mongodb/sql server/android/javascript/mysql/mvc/easyui/vue/echarts原创教程。 我们一直都在坚持的是:认证负责、一丝不苟、以工匠的精神来打磨每一套教程,让读者感受到作者的用心。我们默默投入的时间,确保每一套教程都是一件作品,而不是呆板的文字和视频! 目前我们推出在线辅导班试运营,模式为一对一辅导,教学工具为QQ。我们的辅导学科包括 java 、android原生开发、webapp开发、商城开发、C#和asp.net开发,winform和物联网开发、web前端开发,但不仅限于此。 普通班针对的是国内学员,例如想打好基础的大学生、想转行的有志青年、想深入学习的程序员、想开发软件的初学者或者业余爱好者等。 就业办针对即将毕业上岗的大四学生,或者打算转行的初级开发工程师。 留学生班针对的是在欧美、加拿大、澳洲、日本、韩国、新加坡等地留学的中国学子,目的是让大家熟练地掌握编程技能,按时完成老师布置的作业,并能顺利地通过考试。 详细咨询QQ:1416759661   夜鹰教程网   基于角色的权限管理系统(c-s/b-s)。
  夜鹰教程网   基于nodejs的聊天室开发视频教程
  夜鹰教程网   Git分布式版本管理视频教程
  夜鹰教程网   MVC+EasyUI视频教程
  夜鹰教程网   在线考试系统视频教程
  夜鹰教程网   MongoDB视频教程。
  夜鹰教程网  Canvas视频教程
  夜鹰教程网  报表开发视频教程
  • HTTP协议实现文件断点续传
  • H5实现断点上传
  • 行内元素和块级元素汇总
  • H5视频直播技术介绍
  • border-image详解
  • 你必须知道的HTML5的新特性
  • html5 js控制音乐播放
  • HTML+CSS代码规范
  • css3学习笔记 transition与an…
   热点推荐
什么是css框架
meta标签实现页面的动感效果
CSS半透明滤镜在FIREFOX和IE下面的…
div+css鼠标悬停在div上,div背景色…
纯css下拉菜单特效
div+css的浏览器兼容问题
CSS定义表格线为单一线
CSS滤镜效果收集(全)
列表显示文字和图片垂直居中对齐
在固定位置显示背景图片
网站变换图片的显示方法
在select外面套一个div或span, se…
常用的CSS命名规则
闪字闪字闪字闪字闪字闪字闪字闪字…
css让图片自动适应表格大小
   最近更新
HTTP协议实现文件断点续传
H5实现断点上传
行内元素和块级元素汇总
H5视频直播技术介绍
border-image详解
你必须知道的HTML5的新特性
html5 js控制音乐播放
HTML+CSS代码规范
css3学习笔记 transition与animat…
css3学习笔记Transform
css3学习笔记2D或3D转换
css3学习笔记文本特效
css3学习笔记颜色和透明度
css3学习笔记二
css3学习笔记一

关于我们 | 网站建设 | 技术辅导 | 常见问题 | 联系我们 | 友情链接

夜鹰教程网 版权所有 www.yyjcw.com All rights reserved 备案号:蜀ICP备08011740号3

 

玻璃钢生产厂家福建通用玻璃钢花盆珠海卡通玻璃钢卡通雕塑无锡玻璃钢动物雕塑厂家推广张掖玻璃钢植物雕塑定做加工玻璃钢雕塑哪家好衢州玻璃钢果蔬雕塑玻璃钢雕塑设计色彩九江定制玻璃钢雕塑销售厂家绍兴环保玻璃钢雕塑兰州卡通玻璃钢雕塑制作白银仿真玻璃钢雕塑公司潍坊园林玻璃钢雕塑深圳周年庆典商场美陈厂家供应江门小品玻璃钢雕塑圣诞玻璃钢雕塑制作厂家铜仁公园玻璃钢雕塑厂家报价云浮玻璃钢卡通雕塑推荐货源扬州春季商场美陈兔子玻璃钢雕塑厂家福建玻璃钢园林雕塑浙江玻璃钢仿真雕塑潜江玻璃钢花盆天津玻璃钢雕塑瓷厂江油玻璃钢门头雕塑中西结合玻璃钢花盆雕龙花盆和田气球商场美陈怎样收费云浮仿铜玻璃钢雕塑山西玻璃钢喷泉雕塑玻璃钢卡通狗雕塑贵港玻璃钢泡沫雕塑公司香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化