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

var StationPositionsWorldsBMap = function () {
	var mapBValue = '',marker='',polygon='';
	var Bmap = {
			init : function() {
				// 关闭左侧栏
				if (!$('body').hasClass('page-sidebar-closed')) {$('.menu-toggler.sidebar-toggler').click();}
				// 设置中心点,
				var CENTER_POINT = {lng : 121.528733,lat : 31.237425};
				// 初始化百度地图
				mapBValue = new BMap.Map("positionBmap_basic");
				//中心点和缩放级别
				mapBValue.centerAndZoom(new BMap.Point(CENTER_POINT.lng,CENTER_POINT.lat), 15);
				//启用地图拖拽事件,默认启用(可不写)
				mapBValue.enableDragging(); 
				//启用地图滚轮放大缩小
				mapBValue.enableScrollWheelZoom(); 
				//禁用鼠标双击放大
				mapBValue.disableDoubleClickZoom();
				//启用键盘上下左右键移动地图
				mapBValue.enableKeyboard();
				return mapBValue;
			},
			// 获取百度地图map值
			getMapBValue : function(){
				return mapBValue;
			},
			setDragEnable: function() {
				marker.enableDragging();
				marker.addEventListener('rightclick', Bmap.confirmCenterPoint);
				layer.msg(i18n('txt-89'));
			},
			confirmCenterPoint: function(event) {
				marker.disableDragging();
				var station = event.target.station, point = event.target.point;
				PositionsPublicFunctions.stationUpdate({id: station.id, centerPointWkt: 'POINT(' + point.lng + ' ' + point.lat + ')'}, function () {
					layer.msg(i18n('txt-1419'));
					marker.removeEventListener('rightclick', Bmap.confirmCenterPoint);
				});
			},
			editStation: function () {
				i18n4get('edit.html', function(m){
					$(pjaxContainer).append(m);
					$('#edit_station_modal').trigger('modal.show', [StationPositionsWorldsBMap,PositionsPublicFunctions,PositionsStationObj]);
				});
			},
			position : function(station, html, opts) {
				// 将视图切换到指定的缩放等级,中心点坐标不变。注意:当有信息窗口在地图上打开时,地图缩放将保证信息窗口所在的坐标位置不动。(自1.2新增)
				mapBValue.centerAndZoom(station.point, 17);
		  		// 创建信息窗口
		  		infoWindow = new BMap.InfoWindow(html, opts);
		  	  	// 创建点
				marker = new BMap.Marker(station.point);
				marker.station = station;
				// 把标注添物加到地图上
			  	mapBValue.addOverlay(marker);
		  		// 是否在平移过程中禁止动画。(自1.2新增)
		  		var options ={noAnimation: true};
		  		// 将地图的中心点更改为给定的点。
		  		mapBValue.panTo(station.point, options);
		  		mapBValue.panBy(10, -250, options);
		  		// 添加标志物监听事件
		  		marker.addEventListener("click",function() {
		  			//开启信息窗口
		  			marker.openInfoWindow(infoWindow, station.point);
			  	});
			},
			// 定位
			localSearchFromAdreesToPoint: function(Address,callback) {
				// 创建一个搜索类实例
				var localSearch = new BMap.LocalSearch(mapBValue);
				// 检索完成后的回调函数。
				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);
			},
			localtionPoint : function(stationNameV) {
				StationPositionsWorldsBMap.localSearchFromAdreesToPoint(stationNameV,function(Points) {
					if(Points) {
						var BJwpointsArray = Points.split(' ');
						var stationNameChangePoint = new BMap.Point(BJwpointsArray[0], BJwpointsArray[1]);
				  		var marker_stargt2 = new BMap.Marker(stationNameChangePoint); 
				  		var PanOptions ={noAnimation :true};
				  		mapBValue.panTo(stationNameChangePoint,PanOptions);
				  		mapBValue.panBy(0,-100);
				  		// 将标注添加到地图中
				  		mapBValue.addOverlay(marker_stargt2);  
				  		//跳动的动画
				  		marker_stargt2.setAnimation(BMAP_ANIMATION_BOUNCE); 
					}
				});
			},
			// 清楚地图覆盖物
			clearMarkAndOverlays : function() {
				mapBValue.clearOverlays();
			}
	}
	return Bmap;
}();