//author 周 // var map, marker, infoWindow, geolocation, geocoder;//地图加载默认参数 mapClass = function(id, lnglat, map_success_back){ /*******************************************************地图加载事件start**********************************************************/ //加载地图,调用浏览器定位服务 _this = this; this.init(id, lnglat, map_success_back);//初始化函数 }; mapClass.prototype = { init : function(id, lnglat, map_success_back){ _this.setAttr(); _this.map_callback = map_success_back; var msp_json = { zoom: _this.zoom } if(lnglat["lat"] != ''|| lnglat["lng"] != '' ){ msp_json["center"] = [lnglat["lng"], lnglat["lat"]]//初始化地图中心点} } _this.map = new AMap.Map(id, msp_json); //加载地图插件 _this.map.plugin('AMap.Geolocation', function() { _this.geolocation = new AMap.Geolocation({ enableHighAccuracy: false,//是否使用高精度定位,默认:true timeout: 1, //超过10秒后停止定位,默认:无穷大 buttonOffset: new AMap.Pixel(2.5, 2.5),//定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20) zoomToAccuracy: false, //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false buttonPosition:'RB', showMarker: false, //定位成功后在定位到的位置显示点标记,默认:true }); _this.map.plugin(["AMap.ToolBar"], function() { _this.map.addControl(new AMap.ToolBar()); }); // _this.geolocation.getCurrentPosition(); _this.marker = new AMap.Marker({ map:_this.map, bubble:true }) _this.infoWindow = new AMap.InfoWindow({ content: '', offset: {x: 0, y: -30} }); _this.map.plugin('AMap.Geocoder',function(){ _this.geocoder = new AMap.Geocoder({ radius: 500 //范围,默认:500 }); }); AMap.event.addListener(_this.geolocation, 'complete', function(data){ _this.map_change = false; _this.markerMove(data.position, data.formattedAddress, data.addressComponent); });//返回定位信息 AMap.event.addListener(_this.geolocation, 'error', function(){}); //返回定位出错信息 }); _this.map.on('click',function(e){ if(_this.map_click){ _this.map_change = false; _this.geocoder.getAddress(e.lnglat,function(status,result){ if(status == 'complete'){ _this.markerMove(e.lnglat, result.regeocode.formattedAddress,result.regeocode.addressComponent); }else{ _this.markerMove(e.lnglat, "定位失败"); } }) }else{ return false; } }) if(_this.map_callback != undefined){ _this.map_callback(_this); } }, getCurrentPosition : function (){ _this.geolocation.getCurrentPosition(); }, onComplete : function(data){ // console.log(data); // if (_this.location) { _this.map_change = false; _this.markerMove(data.position, data.formattedAddress, data.addressComponent); // }else{ // _this.location = true; // if(_this.map_callback != undefined){ // _this.map_callback(_this); // } // // } }, onError : function(){ }, markerMove : function(position, address, data){ var address_detail = address; address_detail = address_detail.replace(data.province,''); address_detail = address_detail.replace(data.city,''); address_detail = address_detail.replace(data.district,''); address_detail = address_detail.replace(data.township,''); _this.marker.setPosition(position); _this.infoWindow.setContent("

当前位置:" + address + ""); // _this.infoWindow.setPosition("

当前位置:" + address + ""); // _this.infoWindow.setPosition(); _this.infoWindow.open(_this.map, position); _this.map.setZoomAndCenter(20, _this.marker.getPosition());//设置地图放大级别及居中 _this.address.province_name = data.province; if(data.city == ""){ _this.address.city_name = data.province; }else{ _this.address.city_name = data.city; } _this.address.district_name = data.district; _this.address.township_name = data.township; _this.address.area = _this.address.province_name+","+_this.address.city_name+","+_this.address.district_name+","+_this.address.township_name; _this.address.longitude = position.lng; _this.address.latitude = position.lat; _this.address.address = address_detail; if(!_this.map_change){ console.log( _this.address); mapChangeCallBack(); }else{ selectCallBack(); } }, mapChange : function(address){ if (_this.map_change) { var province_name = _this.address.province > 0 ? _this.address.province_name : ''; var city_name = _this.address.province > 0 && _this.address.city > 0 ? _this.address.city_name : ''; var districts_name = _this.address.province > 0 && _this.address.city > 0 && _this.address.district > 0 ? _this.address.district_name : ''; var township_name = _this.address.province > 0 && _this.address.city > 0 && _this.address.district > 0 && _this.address.township > 0 ? _this.address.township_name : ''; var address_detail = _this.address.province > 0 && _this.address.city > 0 && _this.address.district > 0 && _this.address.township > 0 ? _this.address.address : ''; if(!address){ address = province_name + city_name + districts_name + township_name + address_detail; } //console.log(_this.address); _this.geocoder.getLocation(address, function (status, result) { if (status === 'complete' && result.info === 'OK') { _this.markerMove(result.geocodes[0].location, result.geocodes[0].formattedAddress, result.geocodes[0].addressComponent); } }); } }, setAttr : function(){ _this.map = ""; _this.marker = ""; _this.infoWindow = ""; _this.geolocation = ""; _this.geocoder = ""; _this.location = false; _this.map_change = true; _this.map_click = true; _this.zoom = 15; _this.address = { province : "", province_name : "", city : "", city_name : "", district : "", district_name : "", township : "", township_name : "", address : "", longitude : "", latitude : "", area : "" }; }, destroy : function(){ _this.map.destroy( );//销毁地图 }, setMapCircle : function(radius_num, position){ if(radius_num == undefined && radius_num <= 0){ return; } _this.map.clearMap(); // var circle_arr = map.getAllOverlays('circle'); // if(circle_arr.length > 0){{ // map.remove(circle) // } console.log(position); if(position != undefined){ var center_position = new AMap.LngLat(position['lon'], position['lat']) }else{ var center_position = _this.marker.getPosition(); } var circle = new AMap.Circle({ center: center_position,// 圆心位置 radius: radius_num*1000, //半径 strokeColor: "#F33", //线颜色 strokeOpacity: 1, //线透明度 strokeWeight: 3, //线粗细度 fillColor: "#ee2200", //填充颜色 fillOpacity: 0.35//填充透明度 }); _this.map.add(_this.marker); circle.setMap(_this.map); } }