百度地图demo

  1 // 百度地图API功能
  2 var map = new BMap.Map("allmap"); // 创建Map实例
  3 map.centerAndZoom(new BMap.Point(106.20647861, 38.50262101), 13); // 初始化地图,设置中心点坐标和地图级别
  4 map.addControl(new BMap.MapTypeControl()); //添加地图类型控件
  5 //map.setCurrentCity("北京"); // 设置地图显示的城市 此项是必须设置的
  6 //map.centerAndZoom("银川",13); // 初始化地图,用城市名设置地图中心点
  7 map.enableScrollWheelZoom(); //开启鼠标滚轮缩放    
  8 cdBz();//右键菜单选择标注
  9 gjllqdw();//根据浏览器定位    
 10 //addMathMarker();//随机添加标注    
 11 addMarkerWindow();//给点不同标注添加不同信息窗口
 12 console.log(map);
 13 
 14 //图标标注
 15 function showInfo(e){
 16 //alert(e.point.lng + ", " + e.point.lat);
 17 //console.log(e.point.lng + ", " + e.point.lat);
 18 var point=new BMap.Point(e.point.lng , e.point.lat);
 19 addBz(point); //创建标注    
 20 }
 21 //单击获取点击的经纬度    
 22 function addClick(){
 23 map.addEventListener("click", showInfo);
 24 }
 25 //单击取消获取点击的经纬度    
 26 function removeClick(){
 27 map.removeEventListener("click", showInfo);
 28 }
 29 
 30 //创建标注    
 31 function addBz(point){
 32 var marker = new BMap.Marker(point);// 创建标注
 33 map.addOverlay(marker); // 将标注添加到地图中
 34 marker.disableDragging(); // 不可拖拽
 35 //marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
 36 addyjcd(marker,point);//标注添加右键菜单
 37 
 38 } 
 39 
 40 // 编写自定义函数,创建标注
 41 function addMarker(point){
 42 var marker = new BMap.Marker(point);
 43 map.addOverlay(marker);
 44 addCkNr(marker,point);//给标注添加信息框
 45 }
 46 
 47 //获取覆盖物位置
 48 function attribute(e){
 49 var p = e.target;
 50 alert("marker的位置是" + p.getPosition().lng + "," + p.getPosition().lat); 
 51 } 
 52 
 53 //右键菜单选择
 54 function cdBz(){
 55 var menu = new BMap.ContextMenu();//创建右侧菜单
 56 var txtMenuItem = [
 57 {
 58 text:'开始标注',
 59 callback:function(){addClick()}
 60 },{
 61 text:'完成标注',
 62 callback:function(){removeClick()}
 63 }
 64 ];
 65 for(var i=0; i < txtMenuItem.length; i++){//循环给右侧菜单添加功能选项
 66 menu.addItem(new BMap.MenuItem(txtMenuItem[i].text,txtMenuItem[i].callback,100));
 67 }
 68 map.addContextMenu(menu);
 69 }
 70 //给标注添加信息窗口
 71 function addCkNr(marker,point){
 72 var infoWindow = new BMap.InfoWindow('位置坐标:'+point.lng+','+point.lat, opts); // 创建信息窗口对象 
 73 marker.addEventListener("click", function(){ 
 74 map.openInfoWindow(infoWindow,point); //开启信息窗口
 75 });    
 76 }
 77 
 78 function getBzZb(){
 79 console.log(marker.point);
 80 } 
 81 //根据浏览器定位 
 82 function gjllqdw(){
 83 var geolocation = new BMap.Geolocation();
 84 geolocation.getCurrentPosition(function(r){
 85 if(this.getStatus() == BMAP_STATUS_SUCCESS){
 86 var mk = new BMap.Marker(r.point);//创建浏览器坐标点 标注
 87 map.addOverlay(mk);//添加到 地图上
 88 map.panTo(r.point);
 89 addCkNr(mk,r.point);//给标注添加 窗口
 90 mk.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
 91 alert('您的位置:'+r.point.lng+','+r.point.lat);
 92 console.log('您的位置:'+r.point.lng+','+r.point.lat);
 93 return r.point;
 94 }
 95 else {
 96 alert('failed'+this.getStatus());
 97 } 
 98 },{enableHighAccuracy: true})
 99 
100 }
101 //给标注添加右键菜单
102 function addyjcd(marker,point){
103 var removeMarker = function(e,ee,marker){//右键菜单 删除方法
104 map.removeOverlay(marker);
105 }
106 //创建右键菜单
107 var markerMenu=new BMap.ContextMenu();
108 markerMenu.addItem(new BMap.MenuItem('删除',removeMarker.bind(marker)));//给菜单添加删除选项
109 var txtMenuItem = [
110 {    
111 text:'移动标注',
112 callback:function(){marker.enableDragging()}
113 },{
114 text:'不可移动标注',
115 callback:function(){marker.disableDragging()}
116 }
117 ];
118 for(var i=0; i < txtMenuItem.length; i++){//循环给右侧菜单添加功能选项
119 markerMenu.addItem(new BMap.MenuItem(txtMenuItem[i].text,txtMenuItem[i].callback,100));
120 }
121 
122 marker.addContextMenu(markerMenu);//给标注添加 右侧菜单
123 
124 marker.addEventListener("dragend", function(e){ //监听标注移动后坐标 
125 alert("当前位置:" + e.point.lng + ", " + e.point.lat);    
126 })
127 }
128 
129 //随机创建标注
130 function addMathMarker(){
131 // 随机向地图添加25个标注
132 var bounds = map.getBounds();
133 var sw = bounds.getSouthWest();
134 var ne = bounds.getNorthEast();
135 console.log(bounds);
136 var lngSpan = Math.abs(sw.lng - ne.lng);
137 var latSpan = Math.abs(ne.lat - sw.lat);
138 var data_info=new Array()
139 for (var i = 0; i < 25; i ++) {//循环添加标注
140 var point = new BMap.Point(sw.lng + lngSpan * (Math.random() * 0.7), ne.lat - latSpan * (Math.random() * 0.7));
141 //addMarker(point);
142 var myArray=new Array()
143 myArray[0]=point.lng;    
144 myArray[1]=point.lat;    
145 myArray[2]="标注坐标:"+point.lng+","+point.lat+'<a href="https://www.baidu.com">百度'+i+':https://www.baidu.com</a>';
146 myArray[3]=point;
147 data_info[i]=myArray;
148 }
149 return data_info;
150 }
151 
152 //给点不同标注添加不同信息窗口
153 function addMarkerWindow(){
154 //坐标和信息
155 var data_info = addMathMarker();
156 
157 for(var i=0;i<data_info.length;i++){
158 //设置自定义图片
159 var myIcon=null;
160 /* 
161 if(i<26){
162 myIcon= new BMap.Icon("../js/map-marker-flag-3-right-pink.png", new BMap.Size(300,157));
163 }
164 if(i<20){
165 myIcon= new BMap.Icon("../js/map-marker-flag-3-right-chartreuse.png", new BMap.Size(300,157));
166 }
167 if(i<10){
168 myIcon= new BMap.Icon("../js/map-marker-flag-3-right-azure.png", new BMap.Size(300,157));
169 }
170 */
171 var marker = new BMap.Marker(new BMap.Point(data_info[i][0],data_info[i][1])/* ,{icon:myIcon} */); // 创建标注
172 var content = data_info[i][2];
173 map.addOverlay(marker); // 将标注添加到地图中
174 addClickHandler(content,marker);
175 addyjcd(marker,data_info[i][3]);//标注添加右键菜单
176 }
177 }
178 //给该标注添加监听事件
179 function addClickHandler(content,marker){
180 marker.addEventListener("click",function(e){//事件监听
181 openInfo(content,e)}
182 );
183 }
184 //获取该标注 坐标 并创建窗口 并开启 
185 function openInfo(content,e){
186 var p = e.target;
187 var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat);
188 var infoWindow = new BMap.InfoWindow(content,opts); // 创建信息窗口对象 
189 map.openInfoWindow(infoWindow,point); //开启信息窗口
190 }
191 
192 
193 //窗口样式
194 var opts = {
195 width : 300, // 信息窗口宽度
196 height: 100, // 信息窗口高度
197 title : "信息窗口" , // 信息窗口标题
198 enableMessage:true//设置允许信息窗发送短息
199 };

 

转载于:https://www.cnblogs.com/bowei/p/8258137.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值