station-positions-map.js 9.56 KB
/**
 * 百度地图
 * 
 */

var WorldsBMap = function () {
	
	var Bmap = {
			
			init : function() {
				
				// 关闭左侧栏
				if (!$('body').hasClass('page-sidebar-closed')) {
					
					$('.menu-toggler.sidebar-toggler').click();
					
				}
				
				// 设置中心点,
				var CENTER_POINT = {lng : 121.528733,lat : 31.237425};
				
				// 百度API Key
				var bdKey = 'IGGrr4UjwIYzatoCRFKEL8sT';
				
				// 初始化百度地图
				var map = new BMap.Map("bmap_basic");
				
				//中心点和缩放级别
				map.centerAndZoom(new BMap.Point(CENTER_POINT.lng,CENTER_POINT.lat), 15);
				
				//启用地图拖拽事件,默认启用(可不写)
				map.enableDragging(); 
				
				//启用地图滚轮放大缩小
				map.enableScrollWheelZoom(); 
				
				//禁用鼠标双击放大
				map.disableDoubleClickZoom();
				
				//启用键盘上下左右键移动地图
				map.enableKeyboard();
				
				var styleOptions = {
						
						//边线颜色。
						strokeColor : "blue",
						
						//填充颜色。当参数为空时,圆形将没有填充效果。
						fillColor : "blue",
						
						//边线的宽度,以像素为单位。
						strokeWeight : 3,
						
						//边线透明度,取值范围0 - 1。
						strokeOpacity : 0.8,
						
						//填充的透明度,取值范围0 - 1。
						fillOpacity : 0.6,
						
						//边线的样式,solid或dashed。
						strokeStyle : 'solid' 
							
				};
				
				// 创建鼠标绘制管理类
				drawingManager = new BMapLib.DrawingManager(map, {
					
					//是否开启绘制模式
					isOpen : false,
					
					//是否显示工具栏
					enableDrawingTool : false,
					
					drawingToolOptions : {
						
						//位置
						anchor : BMAP_ANCHOR_TOP_RIGHT,
						
						//偏离值
						offset : new BMap.Size(5, 5),
						
						//工具栏缩放比例
						scale : 0.8
						
					},
					
					//线的样式
					polygonOptions : styleOptions
					
				});
				
				// 添加绘画完成事件
				drawingManager.addEventListener('polygoncomplete', function(e) {
					
					drawingManager.close();
					 
					 if (e.getPath().length <= 2) {
						 
						// 弹出提示消息
						layer.msg('坐标点不能小于等于两个...');
						 
						 // 清除地图覆盖物
						 map.clearOverlays();
						 
						 // 加载该线路下所有站点位置添加到地图上
						 return false;
						 
					 }else {
						 
						 var pointE = e;
						 
						 // 多变行质心点
						 var addSttationPoints_ = pointE.getBounds().getCenter().lng+ ' ' + pointE.getBounds().getCenter().lat;
						 
						 var PointsList = [];
						 
						 for ( var i = 0; i < pointE.getPath().length; i++) {
								
				 			 PointsList.push({potion: {lng: pointE.getPath()[i].lng, lat: pointE.getPath()[i].lat}});
					 			 
					 	 }
						 
						 PointsList.push({potion: {lng: pointE.getPath()[0].lng, lat: pointE.getPath()[0].lat}});
						 
						 var centre  = [{potion:{lng:pointE.getBounds().getCenter().lng,lat:pointE.getBounds().getCenter().lat}}];
						 
						 PublicFunctions.getFormPointEToWGS(PointsList,function(resultdata) {
							 
							 var gPloygonGrid = '';
								
							 var bPloygonGrid = '';
								
							 for(var k =0;k<resultdata.length;k++) {
									
								 if(k==0) {
										
									 gPloygonGrid = resultdata[k].WGSpotion.Lng + ' ' +resultdata[k].WGSpotion.Lat;
										
									 bPloygonGrid = resultdata[k].potion.lng + ' ' +resultdata[k].potion.lat;
										
								 }else {
										
									 gPloygonGrid = gPloygonGrid + ',' + resultdata[k].WGSpotion.Lng + ' ' +resultdata[k].WGSpotion.Lat;
										
									 bPloygonGrid = bPloygonGrid + ',' + resultdata[k].potion.lng + ' ' +resultdata[k].potion.lat;
										
								 }
									
							 }
							 
							 gPloygonGrid = 'POLYGON((' + gPloygonGrid + '))';
							 
							 bPloygonGrid = 'POLYGON((' + bPloygonGrid + '))';
							 
							 PublicFunctions.getFormPointEToWGS(centre,function(p) {
								 
								 var gLonx = p[0].WGSpotion.Lng;
									
								 var gLaty = p[0].WGSpotion.Lat;

								 PublicFunctions.editSeteditStationParmasValue(addSttationPoints_,gLonx,gLaty,bPloygonGrid,gPloygonGrid,'d','');
									
								$.get('edit.html', function(m){$(pjaxContainer).append(m);});
								 
							 });
							 
						  });
					 }
					 
				});
				
				return map;
			},
			
			// 打开绘画工具
			drawingManagerOpen : function() {
				
				// 清楚地图覆盖物
				mapB.clearOverlays();
				
				// 打开鼠标绘画工具
				drawingManager.open();
				
				// 设置属性
				drawingManager.setDrawingMode(BMAP_DRAWING_POLYGON);
				
			},
			
			// 编辑图形
			editShapes : function(stationShapesTypeV,mindex) {
				
				// 编辑圆
				if(stationShapesTypeV =='r') {
					
					// 开启编辑功能
					circle.enableEditing();
					
					// 编辑圆监听事件
					circle.addEventListener('dblclick',function() {
						
						// 关闭提示弹出层
						layer.close(mindex);
						
						// 返回圆形的半径,单位为米。
						var newRadius = circle.getRadius();
						
						// 返回圆形的中心点坐标。
						var newCenter = circle.getCenter().lng + ' ' + circle.getCenter().lat;
						
						var centre_New = [{potion:{lng:circle.getCenter().lng,lat:circle.getCenter().lat}}];
						
						// 中心百度坐标转WGS坐标
						PublicFunctions.getFormPointEToWGS(centre_New,function(p) {
							 
							// 设置修改站点参数集合
							PublicFunctions.editSeteditStationParmasValue(newCenter, p[0].WGSpotion.Lng , p[0].WGSpotion.Lat,'','','r',Math.round(newRadius));
							
							// 加载编辑页面
							$.get('edit.html', function(m){$(pjaxContainer).append(m);}); 
							
						});
						
					});
				
				// 编辑多变行
				}else if(stationShapesTypeV =='d') {
					
					// 开启编辑功能(自 1.1 新增)
					polygon.enableEditing();
					
					// 添加多变行编辑事件
					polygon.addEventListener('dblclick',function(e) {
						 
						 // 获取编辑的多边形对象
						 var edit_pointE = polygon;
						 
						 // 多边形坐标点集合
						 var eidt_PointsList = [];
							
						 for ( var i = 0; i < edit_pointE.getPath().length; i++) {
								
							 eidt_PointsList.push({potion: {lng: edit_pointE.getPath()[i].lng, lat: edit_pointE.getPath()[i].lat}});
					 			 
					 	 }
						 
						 eidt_PointsList.push({potion: {lng: edit_pointE.getPath()[0].lng, lat: edit_pointE.getPath()[0].lat}});
						 
						 var edit_centre  = [{potion:{lng:edit_pointE.getBounds().getCenter().lng,lat:edit_pointE.getBounds().getCenter().lat}}];
						 
						 // 多边形中心点
						 var centre_points = edit_pointE.getBounds().getCenter().lng + ' ' + edit_pointE.getBounds().getCenter().lat;
						 
						 // 多边形坐标点集合转WGS坐标
						 PublicFunctions.getFormPointEToWGS(eidt_PointsList,function(resultdata) {
							 
							 // 多边形WGS坐标字符串
							 var eidt_gPloygonGrid = '';
							 
							 // 百度坐标字符串
							 var edit_bPloygonGrid = '';
								
							 for(var k =0;k<resultdata.length;k++) {
									
								 if(k==0) {
										
									 eidt_gPloygonGrid = resultdata[k].WGSpotion.Lng + ' ' +resultdata[k].WGSpotion.Lat;
										
									 edit_bPloygonGrid = resultdata[k].potion.lng + ' ' +resultdata[k].potion.lat;
										
								 }else {
										
									 eidt_gPloygonGrid = eidt_gPloygonGrid + ',' + resultdata[k].WGSpotion.Lng + ' ' +resultdata[k].WGSpotion.Lat;
										
									 edit_bPloygonGrid = edit_bPloygonGrid + ',' + resultdata[k].potion.lng + ' ' +resultdata[k].potion.lat;
										
								 }
									
							 }
							 
							 eidt_gPloygonGrid = 'POLYGON((' + eidt_gPloygonGrid + '))';
							 
							 edit_bPloygonGrid = 'POLYGON((' + edit_bPloygonGrid + '))';
							 
							 // 中心点坐标转WGS坐标
							 PublicFunctions.getFormPointEToWGS(edit_centre,function(p) {
								 
								 var edit_gLonx = p[0].WGSpotion.Lng;
									
								 var edit_gLaty = p[0].WGSpotion.Lat;
								 
								 // 设置编辑站点参宿集合
								 PublicFunctions.editSeteditStationParmasValue(centre_points,edit_gLonx,edit_gLaty,edit_bPloygonGrid,eidt_gPloygonGrid,'d','');
								 
								 // 加载编辑页面
								 $.get('edit.html', function(m){$(pjaxContainer).append(m);});
								 
							 });
							 
						  });
						
						
					});
					
				}
				
			},
			
			localSearchFromAdreesToPoint: function(Address,map,callback) {
				
				// 创建一个搜索类实例
				var localSearch = new BMap.LocalSearch(map);
				
				// 检索完成后的回调函数。
				localSearch.setSearchCompleteCallback(function (searchResult) {
					
					var resultPoints = '';
					
					if(searchResult) {
						
						// 返回索引指定的结果。索引0表示第1条结果
						var poi = searchResult.getPoi(0);
						
						if(poi) {
							
							//获取经度和纬度
							resultPoints = poi.point.lng + ' ' + poi.point.lat;
							
							callback && callback(resultPoints);
							
						}else {
							
							callback && callback(false);
							
						}
						
					}else {
						
						callback && callback(false);
					}
					
				});
				
				// 根据检索词发起检索。
				localSearch.search(Address);
				
			}
			 
	}
	
	return Bmap;
	
}();