| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- //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 : async function(id, lnglat, map_success_back){
- _this.setAttr();
- _this.map_callback = map_success_back;
- var center;
- if(lnglat["lat"] != ''|| lnglat["lng"] != '' ){
- center = new TMap.LatLng(lnglat.lat,lnglat.lng);
- } else {
- await _this.getCurrentPosition(function(res){
- if (res.status == 0) {
- var location = res.result.location;
- center = new TMap.LatLng(location.lat, location.lng);
- }
- })
- }
- _this.map = new TMap.Map(document.getElementById(id), {
- center: center,//设置地图中心点坐标
- zoom: 17 //设置地图缩放级别
- });
- // 创建中心点标记
- _this.marker = new TMap.MultiMarker({
- map: _this.map,
- geometries: [
- {
- id: 'center',
- position: _this.map.getCenter(),
- }
- ]
- });
- _this.infoWindow = new TMap.InfoWindow({
- content: "", //信息窗口内容
- position: center,//显示信息窗口的坐标
- map: _this.map,
- offset: {x: 0, y: -50}
- });
- _this.infoWindow.close(); // 初始化关闭窗体
- _this.map.on('click',function(e){
- if(_this.map_click){
- _this.map_change = false;
- _this.getAddress(e.latLng,function(result){
- _this.markerMove(e.latLng, result.address, result.addressComponents);
- })
- }else{
- return false;
- }
- })
- if(map_success_back != undefined){
- map_success_back(_this);
- }
- },
- getAddress(LatLng, callback){
- var geocoder = new qq.maps.Geocoder({
- complete:function(result){
- var detail = result.detail;
- callback(detail);
- }
- });
- var coord=new qq.maps.LatLng(LatLng.lat,LatLng.lng);
- geocoder.getAddress(coord)
- },
- getCurrentPosition : async function (callback){
- var ipLocation = new TMap.service.IPLocation();
- await ipLocation.locate({}).then(function(res){
- callback(res)
- })
- },
- markerMove : function(position, address, data){
- var center = new TMap.LatLng(position.lat, position.lng);
- var address_detail = address;
- address_detail = address_detail.replace(data.country,'');
- address_detail = address_detail.replace(data.province,'');
- address_detail = address_detail.replace(data.city,'');
- address_detail = address_detail.replace(data.district,'');
- _this.marker.updateGeometries([
- {
- id: 'center',
- position: center
- }
- ]);
- _this.infoWindow.open()
- _this.infoWindow.setPosition(center);
- _this.infoWindow.setContent("<p>当前位置:<span class='text-color'>" + address + "</span>");
- _this.map.setCenter(position);
- _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.street;
- _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){
- 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 address_detail = _this.address.province > 0 && _this.address.city > 0 && _this.address.district > 0 ? _this.address.detail_address : '';
- if(!address){
- address = province_name +','+ city_name +','+ districts_name +','+ address_detail;
- }
- _this.getLocation(address, function (result) {
- _this.markerMove(result.location, result.address, result.addressComponents);
- });
- }
- },
- getLocation(address, callback){
- var callbacks = {
- complete:function(result){
- var detail = result.detail;
- callback(detail);
- }
- }
- var geocoder = new qq.maps.Geocoder(callbacks);
- geocoder.getLocation(address);
- },
- 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)
- // }
- 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);
- }
- }
|