%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/map.google.search/templates/.default/ |
Current File : /home/bitrix/www/bitrix/components/bitrix/map.google.search/templates/.default/script.js |
var JCBXGoogleSearch = function(map_id, obOut, jsMess) { var _this = this; this.map_id = map_id; this.map = GLOBAL_arMapObjects[this.map_id]; this.obOut = obOut; if (null == this.map) return false; this.arSearchResults = []; this.jsMess = jsMess; this.__searchResultsLoad = function(obResult, status) { if (status != google.maps.GeocoderStatus.OK && status != google.maps.GeocoderStatus.ZERO_RESULTS) { _this.handleError({message: status}); return; } if (null == _this.obOut) return; if (!obResult) { _this.handleError(); } _this.obOut.innerHTML = ''; _this.clearSearchResults(); var len = 0; if (status == google.maps.GeocoderStatus.OK) { len = obResult.length; var obList = null; } if (len > 0) { obList = document.createElement('UL'); obList.className = 'bx-google-search-results'; var str = ''; str += _this.jsMess.mess_search + ': <b>' + len + '</b> ' + _this.jsMess.mess_found + '.'; for (var i = 0; i < len; i++) { _this.arSearchResults[i] = new google.maps.Marker({ position: obResult[i].geometry.location, map: _this.map }); var text = ''; for (var j = 0; j < obResult[i].address_components.length; j++) { text += (text.length > 0 ? ', ' : '') + obResult[i].address_components[j].long_name; } _this.arSearchResults[i].infowin = new google.maps.InfoWindow({ content: text }); google.maps.event.addListener(_this.arSearchResults[i], 'click', _this.__pointClick); var obListElement = document.createElement('LI'); var obLink = document.createElement('A'); obLink.href = "javascript:void(0)"; obLink.appendChild(document.createTextNode(text)); obLink.BXSearchIndex = i; obLink.onclick = _this.__showSearchResult; obListElement.appendChild(obLink); obList.appendChild(obListElement); } } else { var str = _this.jsMess.mess_search_empty; } _this.obOut.innerHTML = str; if (null != obList) { _this.obOut.appendChild(obList); _this.BXSearchIndex = 0; _this.__showSearchResult(0); } }; this.__showSearchResult = function(index) { if (null == index || index.constructor == window.Event); index = this.BXSearchIndex; if (null != index && null != _this.arSearchResults[index]) { _this.__pointClick.apply(_this.arSearchResults[index]); _this.map.panTo(_this.arSearchResults[index].getPosition()); } }; this.searchByAddress = function(str) { //str = jsUtils.trim(str); str = str.replace(/^[\s\r\n]+/g, '').replace(/[\s\r\n]+$/g, ''); if (str.length > 1) { if (null == this.geocoder) this.geocoder = new google.maps.Geocoder(); this.geocoder.geocode({ address: str, language: BX.message('LANGUAGE_ID') }, this.__searchResultsLoad); } } } JCBXGoogleSearch.prototype.__pointClick = function() { if (null != window['__bx_google_infowin_opened_search']) window['__bx_google_infowin_opened_search'].close(); this.infowin.open(this.map, this); window['__bx_google_infowin_opened_search'] = this.infowin; } JCBXGoogleSearch.prototype.handleError = function(error) { alert(this.jsMess.mess_error + (error ? ': ' + error.message : '')); } JCBXGoogleSearch.prototype.clearSearchResults = function() { for (var i = 0; i < this.arSearchResults.length; i++) { this.arSearchResults[i].infowin.close(); this.arSearchResults[i].setMap(null); delete this.arSearchResults[i]; } this.arSearchResults = []; }