/** * @fileoverview 位置信息查询服务 * @author Song.Huang * @version 1.0.0 */ define(function() { var addressSearch = function() { this.formatEarthLatLng = function(lat,lng){ lng = lng%360; if(lng>180){ lng = (lng%180)-180; }else if(lng<-180){ lng = 180+(lng%180); } lat = lat%180; if(lat>90){ lat = (lat%90)-90; }else if(lat<-90){ lat = 90+(lat%90); } return [lat,lng]; }; /** * 通过经纬度二维数组进行地名和站点查询 [[116,36],[117,48]] */ this.latlngToZDAndName = function(lnglat, callbackFunc) { var latlngString; var _this = this; $.each(lnglat, function(i, t) { t = _this.formatEarthLatLng(t[0],t[1]); if (i === 0) { latlngString = t[1] + ',' + t[0]; } else { latlngString = latlngString + '|' + t[1] + ',' + t[0]; } }) $.ajax({ url: onemapUrlConfig.weatherADSerch + "/weatherstation?data=%27" + latlngString + "%27", type: 'GET', dataType: 'jsonp' }) .done(function(data) { ONEMAP.V.loading.loaded(); callbackFunc(data); }) .fail(function() { ONEMAP.V.loading.loaded(); }); }, /** * 通过缩放等级和坐标查询位置信息 * @param {[type]} options [latLng(经纬度数组[纬度,经度]) zoom(地图缩放比例)] * @param {[type]} callbackFunc [description] * @return {[type]} [description] */ this.getAddressInfo = function(options, callbackFunc) { options.latLng = this.formatEarthLatLng(options.latLng[0],options.latLng[1]); var sUrl = onemapUrlConfig.addressSearchDataUrl + '/v1.0/address/near/' + '?z=' + options.zoom + '&lon=' + options.latLng[1] + '&lat=' + options.latLng[0]; ONEMAP.V.loading.load(); $.ajax({ url: sUrl, type: 'GET', dataType: 'jsonp' }) .done(function(data) { ONEMAP.V.loading.loaded(); callbackFunc(data); }) .fail(function() { ONEMAP.V.loading.loaded(); }); } }; return addressSearch; })