File: /home/assotraipi/www/wp-content/plugins/wp-google-maps/js/v8/open-layers/ol-circle.js
/**
* @namespace WPGMZA
* @module OLCircle
* @requires WPGMZA.Circle
*/
jQuery(function($) {
var Parent = WPGMZA.Circle;
WPGMZA.OLCircle = function(options, olFeature)
{
var self = this;
this.center = {lat: 0, lng: 0};
this.radius = 0;
this.fillcolor = "#ff0000";
this.opacity = 0.6;
Parent.call(this, options, olFeature);
this.olStyle = new ol.style.Style(this.getStyleFromSettings());
this.vectorLayer3857 = this.layer = new ol.layer.Vector({
source: new ol.source.Vector(),
style: this.olStyle
});
if(olFeature)
this.olFeature = olFeature;
else
this.recreate();
}
WPGMZA.OLCircle.prototype = Object.create(Parent.prototype);
WPGMZA.OLCircle.prototype.constructor = WPGMZA.OLCircle;
WPGMZA.OLCircle.prototype.recreate = function()
{
if(this.olFeature)
{
this.layer.getSource().removeFeature(this.olFeature);
delete this.olFeature;
}
if(!this.center || !this.radius)
return;
// IMPORTANT: Please note that due to what appears to be a bug in OpenLayers, the following code MUST be exected specifically in this order, or the circle won't appear
var wgs84Sphere = new ol.Sphere(6378137);
var radius = parseFloat(this.radius) * 1000 / 2;
var x, y;
x = this.center.lng;
y = this.center.lat;
var circle4326 = ol.geom.Polygon.circular(wgs84Sphere, [x, y], radius, 64);
var circle3857 = circle4326.clone().transform('EPSG:4326', 'EPSG:3857');
this.olFeature = new ol.Feature(circle3857);
this.layer.getSource().addFeature(this.olFeature);
}
WPGMZA.OLCircle.prototype.getStyleFromSettings = function()
{
var params = {};
/*if(this.settings.strokeOpacity)
params.stroke = new ol.style.Stroke({
color: WPGMZA.hexOpacityToRGBA(this.settings.strokeColor, this.settings.strokeOpacity)
});*/
if(this.opacity)
params.fill = new ol.style.Fill({
color: WPGMZA.hexOpacityToRGBA(this.fillColor, this.opacity)
});
return params;
}
WPGMZA.OLCircle.prototype.updateStyleFromSettings = function()
{
// Re-create the style - working on it directly doesn't cause a re-render
var params = this.getStyleFromSettings();
this.olStyle = new ol.style.Style(params);
this.layer.setStyle(this.olStyle);
}
WPGMZA.OLCircle.prototype.setVisible = function(visible)
{
this.layer.setVisible(visible ? true : false);
}
WPGMZA.OLCircle.prototype.setCenter = function(center)
{
WPGMZA.Circle.prototype.setCenter.apply(this, arguments);
this.recreate();
}
WPGMZA.OLCircle.prototype.setRadius = function(radius)
{
WPGMZA.Circle.prototype.setRadius.apply(this, arguments);
this.recreate();
}
});