Source: google-maps/google-polyline.js

/**

 * @namespace WPGMZA

 * @module GooglePolyline

 * @requires WPGMZA.Polyline

 */

(function($) {

	

	WPGMZA.GooglePolyline = function(row, googlePolyline)

	{

		var self = this;

		

		WPGMZA.Polyline.call(this, row, googlePolyline);

		

		if(googlePolyline)

		{

			this.googlePolyline = googlePolyline;

		}

		else

		{

			this.googlePolyline = new google.maps.Polyline(this.settings);			

			this.googlePolyline.wpgmzaPolyline = this;

			

			if(row && row.points)

			{

				var path = this.parseGeometry(row.points);

				this.setPoints(path);

			}

		}

		

		google.maps.event.addListener(this.googlePolyline, "click", function() {

			self.dispatchEvent({type: "click"});

		});

	}

	

	WPGMZA.GooglePolyline.prototype = Object.create(WPGMZA.Polyline.prototype);

	WPGMZA.GooglePolyline.prototype.constructor = WPGMZA.GooglePolyline;

	

	WPGMZA.GooglePolyline.prototype.setEditable = function(value)

	{

		this.googlePolyline.setOptions({editable: value});

	}

	

	WPGMZA.GooglePolyline.prototype.setPoints = function(points)

	{

		this.googlePolyline.setOptions({path: points});

	}

	

	WPGMZA.GooglePolyline.prototype.toJSON = function()

	{

		var result = WPGMZA.Polyline.prototype.toJSON.call(this);

		

		result.points = [];

		

		var path = this.googlePolyline.getPath();

		for(var i = 0; i < path.getLength(); i++)

		{

			var latLng = path.getAt(i);

			result.points.push({

				lat: latLng.lat(),

				lng: latLng.lng()

			});

		}

		

		return result;

	}

	

})(jQuery);