%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/bitrix/www/local/components/UB/main.profile.map/templates/.default/
Upload File :
Create Path :
Current File : //home/bitrix/www/local/components/UB/main.profile.map/templates/.default/script.js

if (typeof(BX.OrgMap) === "undefined")
{
	
	BX.OrgMap = function()
	{
		this._orgMap;
		this._placemark = false;
	}

	BX.OrgMap.prototype =
	{
		initialize: function()
		{
		  this._orgMap = new ymaps.Map('map', {
			  center: [55.753994, 37.622093],
			  zoom: 9,
			  controls: ['smallMapDefaultSet']
		  });
		  
		  mapConfigSrc = $('input#orgPlacemark').val();
		
			if (mapConfigSrc.length>0) {
				mapConfig = $.parseJSON(decodeURIComponent(mapConfigSrc));		
				this._placemark = this.createPlacemark(mapConfig['placemark']);
			  this._orgMap.geoObjects.add(this._placemark);
			  this._orgMap.panTo(this._placemark.geometry.getCoordinates());			  
			  this._orgMap.setBounds(mapConfig['bounds'], {
			    checkZoomRange: true
			  });
			}
			else this.findBuildingByAddress();
			
			$('button#btnFindByAddress').click($.proxy(function(){
				this.findBuildingByAddress();
			},this));

	    this._orgMap.events.add('click', $.proxy(function (e) {
				var coords = e.get('coords');	
				if (this._placemark) {
					this._placemark.geometry.setCoordinates(coords);
				}
				else {
					this._placemark = this.createPlacemark(coords);
				  this._orgMap.geoObjects.add(this._placemark);
				  this._placemark.events.add('dragend', $.proxy(function () {
						this.saveMap();
				  },this));
				}
				this.saveMap();
	    },this));
			
			$('form#form_main_profile_map').submit($.proxy(function(){
				this.saveMap();
				return true;
			},this));
			
		},

    createPlacemark: function(coords)
    {
      return new ymaps.Placemark(coords, {
        iconContent: ''
      }, {
        draggable: true
      });
    },

		saveMap: function()
		{
			var mapConfig = {
				'placemark': this._placemark.geometry.getCoordinates(),
				'bounds' : this._orgMap.getBounds()
			};			
			$('input#orgPlacemark').val(encodeURIComponent(JSON.stringify(mapConfig)));
		},

		getAddress: function ()
		{
			return $('input#orgRegion').val()+', '+$('input#orgAddress').val();
		},
		
		findBuildingByAddress: function(address)
		{
		  ymaps.geocode(this.getAddress(), {
				results: 1
		  }).then($.proxy(function (res) {
			  var firstGeoObject = res.geoObjects.get(0),
			      coords = firstGeoObject.geometry.getCoordinates(),
			      bounds = firstGeoObject.properties.get('boundedBy');

				if (this._placemark)
					this._placemark.geometry.setCoordinates(coords);
				else {
					this._placemark = this.createPlacemark(coords);
				  this._orgMap.geoObjects.add(this._placemark);
			  }			  
			  this._orgMap.setBounds(bounds, {
			     checkZoomRange: false 
			  });
			  
				this.saveMap();
			}, this));	
		},
				
	}
	
	BX.OrgMap.create = function (id, config)
	{
		var self = new BX.OrgMap();
		self.initialize();
		return self;
	};
}

ymaps.ready(init);

function init() {
	BX.OrgMap.create();
}

Zerion Mini Shell 1.0