/**
* @namespace WPGMZA
* @module GoogleVertexContextMenu
* @requires wpgmza_api_call
*/
(function($) {
if(WPGMZA.settings.engine != "google-maps")
return;
WPGMZA.GoogleVertexContextMenu = function(mapEditPage)
{
var self = this;
this.mapEditPage = mapEditPage;
this.element = document.createElement("div");
this.element.className = "wpgmza-vertex-context-menu";
this.element.innerHTML = "Delete";
google.maps.event.addDomListener(this.element, "click", function(event) {
self.removeVertex();
event.preventDefault();
event.stopPropagation();
return false;
});
}
WPGMZA.GoogleVertexContextMenu.prototype = new google.maps.OverlayView();
WPGMZA.GoogleVertexContextMenu.prototype.onAdd = function()
{
var self = this;
var map = this.getMap();
this.getPanes().floatPane.appendChild(this.element);
this.divListener = google.maps.event.addDomListener(map.getDiv(), "mousedown", function(e) {
if(e.target != self.element)
self.close();
}, true);
}
WPGMZA.GoogleVertexContextMenu.prototype.onRemove = function()
{
google.maps.event.removeListener(this.divListener);
this.element.parentNode.removeChild(this.element);
this.set("position");
this.set("path");
this.set("vertex");
}
WPGMZA.GoogleVertexContextMenu.prototype.open = function(map, path, vertex)
{
this.set('position', path.getAt(vertex));
this.set('path', path);
this.set('vertex', vertex);
this.setMap(map);
this.draw();
}
WPGMZA.GoogleVertexContextMenu.prototype.close = function()
{
this.setMap(null);
}
WPGMZA.GoogleVertexContextMenu.prototype.draw = function()
{
var position = this.get('position');
var projection = this.getProjection();
if (!position || !projection)
return;
var point = projection.fromLatLngToDivPixel(position);
this.element.style.top = point.y + 'px';
this.element.style.left = point.x + 'px';
}
WPGMZA.GoogleVertexContextMenu.prototype.removeVertex = function()
{
var path = this.get('path');
var vertex = this.get('vertex');
if (!path || vertex == undefined) {
this.close();
return;
}
path.removeAt(vertex);
this.close();
}
})(jQuery);