var mod_measure_color1 = "white";
var mod_measure_color2 = "black";
var mod_measure_font = "Arial, Helvetica, sans-serif";
var mod_measure_fontsize = "9px";
var mod_measure_basepoint = "#8a2be2";
var mod_measure_linepoint = "#ff00ff";
var mod_measure_bg = "";
var mod_measure_pgsql = true;
var mod_measure_win = null;
var mod_measure_elName = "measure";
var mod_measure_frameName = "";
var mod_measure_mapObj = null;
var mod_measure_epsg;
var mod_measure_width;
var mod_measure_height;
var mod_measure_RX = new Array();
var mod_measure_RY = new Array();
var mod_measure_Dist = new Array();
var mod_measure_TotalDist = new Array();
// global variable
window.eventAfterMeasure = new MapbenderEvent();
var mod_measure_img_on = new Image(); mod_measure_img_on.src = "";
var mod_measure_img_off = new Image(); mod_measure_img_off.src = "";
var mod_measure_img_over = new Image(); mod_measure_img_over.src = "";
function init_mod_measure(ind){
mod_measure_mapObj = getMapObjByName(mod_measure_target);
//ensure we have the div elements in Mapframe
var map_el = mod_measure_mapObj.getDomElement()
if(!map_el.ownerDocument.getElementById(mod_measure_target+"_measure_sub")){
el = map_el.ownerDocument.createElement("div");
el.style.position = "absolute";
el.style.top = "0px";
el.style.left = "0px";
el.style.zIndex = "98";
el.style.fontSize = "10px";
el1 = el.cloneNode(false);
el2 = el.cloneNode(false);
el.id = mod_measure_target+"_measure_sub";
el.style.zIndex = "10000";
el1.id = mod_measure_target+"_measure_display";
el1.style.zIndex = "22";
el2.id = mod_measure_target+"_measuring";
map_el.appendChild(el);
map_el.appendChild(el1);
map_el.appendChild(el2);
}
mb_button[ind] = document.getElementById(mod_measure_elName);
mb_button[ind].img_over = mod_measure_img_over.src;
mb_button[ind].img_on = mod_measure_img_on.src;
mb_button[ind].img_off = mod_measure_img_off.src;
mb_button[ind].status = 0;
mb_button[ind].elName = mod_measure_elName;
mb_button[ind].fName = mod_measure_frameName;
mb_button[ind].go = function () {
if ($.extend(mod_measure_mapObj).defaultTouch) {
$.extend(mod_measure_mapObj).defaultTouch.deactivate();
}
mod_measure_go();
};
mb_button[ind].stop = function () {
mod_measure_disable();
if ($.extend(mod_measure_mapObj).defaultTouch) {
$.extend(mod_measure_mapObj).defaultTouch.activate();
}
};
mod_measure_width = mod_measure_mapObj.width;
mod_measure_height = mod_measure_mapObj.height;
mod_measure_epsg = mod_measure_mapObj.epsg;
eventAfterMapRequest.register(function () {
drawDashedLine();
});
mb_registerPanSubElement(mod_measure_target+"_measuring");
}
function mod_measure_go(){
var el = mod_measure_mapObj.getDomElement();
if (el) {
$(el).bind("mousedown", mod_measure_start)
.bind("mousemove", mod_measure_run);
el.style.cursor = 'crosshair';
}
var measureSub = eventAfterMeasure.trigger({}, "CAT");
writeTag("",mod_measure_target+"_measure_sub",measureSub);
}
function mod_measure_disable(){
var el = mod_measure_mapObj.getDomElement();
$(el).unbind("mousedown", mod_measure_start)
.unbind("mousemove", mod_measure_run);
writeTag("",mod_measure_target+"_measure_display","");
writeTag("",mod_measure_target+"_measure_sub","");
}
function mod_measure_timeout(){
var el = mod_measure_mapObj.getDomElement();
$(el).unbind("mousedown", mod_measure_start)
.unbind("mousemove", mod_measure_run);
}
function mod_measure_disableTimeout(){
var el = mod_measure_mapObj.getDomElement();
$(el).bind("mousedown", mod_measure_start)
.bind("mousemove", mod_measure_run);
}
function mod_measure_start(e){
var mousepos = mod_measure_mapObj.getMousePosition(e);
var realWorldPos = makeClickPos2RealWorldPos(mod_measure_target,mousepos.x,mousepos.y);
if(mod_measure_epsg=="EPSG:4326"){
mod_measure_RX[mod_measure_RX.length] = realWorldPos[0];
mod_measure_RY[mod_measure_RY.length] = realWorldPos[1];
}
else{
mod_measure_RX[mod_measure_RX.length] = Math.round(realWorldPos[0] * 100)/100;
mod_measure_RY[mod_measure_RY.length] = Math.round(realWorldPos[1] * 100)/100;
}
if(mod_measure_RX.length > 1){
var dist;
if(mod_measure_epsg=="EPSG:4326"){
//convert coordinates to radian
var lon_from=(mod_measure_RX[mod_measure_RX.length-2]*Math.PI)/180;
var lat_from=(mod_measure_RY[mod_measure_RY.length-2]*Math.PI)/180;
var lon_to=(mod_measure_RX[mod_measure_RX.length-1]*Math.PI)/180;
var lat_to=(mod_measure_RY[mod_measure_RY.length-1]*Math.PI)/180;
dist=6371229*Math.acos(Math.sin(lat_from)*Math.sin(lat_to)+Math.cos(lat_from)*Math.cos(lat_to)*Math.cos(lon_from-lon_to));
dist=Math.round(dist*100)/100;
}
else{
var dist_x = Math.abs(mod_measure_RX[mod_measure_RX.length-2] - mod_measure_RX[mod_measure_RX.length-1]);
var dist_y = Math.abs(mod_measure_RY[mod_measure_RY.length-2] - mod_measure_RY[mod_measure_RY.length-1]);
dist = Math.round(Math.sqrt(Math.pow(dist_x,2) + Math.pow(dist_y,2))*100)/100;
}
mod_measure_Dist[mod_measure_Dist.length] = dist;
var totalDist = mod_measure_TotalDist[mod_measure_TotalDist.length-1] + dist;
mod_measure_TotalDist[mod_measure_TotalDist.length] = Math.round(totalDist * 100)/100;
}
else{
mod_measure_Dist[mod_measure_Dist.length] = 0;
mod_measure_TotalDist[mod_measure_TotalDist.length] = 0;
}
drawDashedLine();
}
function drawDashedLine(){
//check if epsg has changed
mod_measure_width = mod_measure_mapObj.width;
mod_measure_height = mod_measure_mapObj.height;
if(mod_measure_epsg != mod_measure_mapObj.epsg){
mod_measure_delete();
mod_measure_epsg = mod_measure_mapObj.epsg;
}
var str_mPoints = "

";
str_mPoints += "
";
for(var i=0; i";
if(i>0){
str_mPoints += ""+mod_measure_TotalDist[i]+"
";
str_mPoints += ""+mod_measure_TotalDist[i]+"
";
}
}
if(mod_measure_RX.length>1){
for(var k=1; k= 0 && x <= mod_measure_width && y >= 0 && y <= mod_measure_height){
str_dashedLine += "";
}
}
str_dashedLine += ""+mod_measure_Dist[count]+"
";
str_dashedLine += ""+mod_measure_Dist[count]+"
";
return str_dashedLine;
}
function mod_measure_run(e){
var mousepos = mod_measure_mapObj.getMousePosition(e);
var pos = makeClickPos2RealWorldPos(mod_measure_target,mousepos.x,mousepos.y);
var dist;
if(mod_measure_epsg=="EPSG:4326"){
//convert coordinates to radian
var lon_from=(pos[0]*Math.PI)/180;
var lat_from=(pos[1]*Math.PI)/180;
var lon_to=(mod_measure_RX[mod_measure_RX.length-1]*Math.PI)/180;
var lat_to=(mod_measure_RY[mod_measure_RY.length-1]*Math.PI)/180;
dist=6371229*Math.acos(Math.sin(lat_from)*Math.sin(lat_to)+Math.cos(lat_from)*Math.cos(lat_to)*Math.cos(lon_from-lon_to));
}
else{
var dist_x = Math.abs(mod_measure_RX[mod_measure_RX.length-1] - pos[0]);
var dist_y = Math.abs(mod_measure_RY[mod_measure_RY.length-1] - pos[1]);
dist=Math.sqrt(dist_x*dist_x+dist_y*dist_y);
}
if(isNaN(dist) == false && mousepos.x > 0 && mousepos.x < mod_measure_width && mousepos.y > 0 && mousepos.y < mod_measure_height){
var str_display = ""+(Math.round(dist*100)/100)+" m";
writeTag("", mod_measure_target+"_measure_display",str_display);
mb_arrangeElement("",mod_measure_target+"_measure_display",mousepos.x +2, mousepos.y - 10);
}
else{
writeTag("",mod_measure_target+"_measure_display","");
}
}
function mod_measure_close(){
if(mod_measure_RX.length < 3 || (mod_measure_RX[mod_measure_RX.length-1] == mod_measure_RX[0] && mod_measure_RY[mod_measure_RY.length-1] == mod_measure_RY[0])){return;}
mod_measure_RX[mod_measure_RX.length] = mod_measure_RX[0];
mod_measure_RY[mod_measure_RY.length] = mod_measure_RY[0];
if(mod_measure_RX.length > 1){
var dist;
if(mod_measure_epsg=="EPSG:4326"){
//convert coordinates to radian
var lon_from=(mod_measure_RX[mod_measure_RX.length-2]*Math.PI)/180;
var lat_from=(mod_measure_RY[mod_measure_RY.length-2]*Math.PI)/180;
var lon_to=(mod_measure_RX[mod_measure_RX.length-1]*Math.PI)/180;
var lat_to=(mod_measure_RY[mod_measure_RY.length-1]*Math.PI)/180;
dist=6371229*Math.acos(Math.sin(lat_from)*Math.sin(lat_to)+Math.cos(lat_from)*Math.cos(lat_to)*Math.cos(lon_from-lon_to));
dist=Math.round(dist*100)/100;
}
else{
var dist_x = Math.abs(mod_measure_RX[mod_measure_RX.length-2] - mod_measure_RX[mod_measure_RX.length-1]);
var dist_y = Math.abs(mod_measure_RY[mod_measure_RY.length-2] - mod_measure_RY[mod_measure_RY.length-1]);
dist = Math.round(Math.sqrt(Math.pow(dist_x,2) + Math.pow(dist_y,2))*100)/100;
}
mod_measure_Dist[mod_measure_Dist.length] = dist;
var totalDist = mod_measure_TotalDist[mod_measure_TotalDist.length-1] + dist;
mod_measure_TotalDist[mod_measure_TotalDist.length] = Math.round(totalDist * 100)/100;
}
else{
mod_measure_Dist[mod_measure_Dist.length] = 0;
mod_measure_TotalDist[mod_measure_TotalDist.length] = 0;
}
drawDashedLine();
}
function mod_measure_delete(){
mod_measure_RX = new Array();
mod_measure_RY = new Array();
mod_measure_Dist = new Array();
mod_measure_TotalDist = new Array();
writeTag("",mod_measure_target+"_measuring","");
writeTag("",mod_measure_target+"_measure_display","");
}
var mod_closePolygon_img = new Image();
mod_closePolygon_img.src = "../img/button_gray/closePolygon_off.gif";
mod_closePolygon_img.title = '';
eventAfterMeasure.register(function(){
return mod_closePolygon();
});
function mod_closePolygon(){
var str = "
";
return str;
}
function mod_closePolygon_go(){
mod_measure_close();
}
var mod_rubber_img = new Image();
mod_rubber_img.src = "../img/button_gray/rubber_off.gif";
mod_rubber_img.title = '';
eventAfterMeasure.register(function () {
return mod_rubber();
});
function mod_rubber(){
var str = "
";
return str;
}
function mod_rubber_go(){
mod_measure_delete();
}
var mod_getArea_img = new Image();
mod_getArea_img.src = "../img/button_gray/getArea_off.gif";
mod_getArea_img.title = '';
eventAfterMeasure.register(function () {
return mod_getArea();
});
function mod_getArea(){
var str = "";
return str;
}
function mod_getArea_go(){
if(mod_measure_RX[mod_measure_RX.length -1] == mod_measure_RX[0] && mod_measure_RY[mod_measure_RY.length -1] == mod_measure_RY[0]){
var ind = getMapObjIndexByName(mod_measure_target);
var url = "../php/mod_evalArea.php?x=";
for(var i=0; i0){ url += ",";}
url += mod_measure_RX[i];
}
url += "&y=";
for(var i=0; i0){ url += ",";}
url += mod_measure_RY[i];
}
var srs = mb_mapObj[ind].epsg.split(":");
url += "&srs="+ escape(srs[1]);
url += "&length=" + mod_measure_TotalDist[mod_measure_TotalDist.length-1];
url += "&distance=" + mod_measure_TotalDist[mod_measure_TotalDist.length-2];
$.get(url, function (json) {
var data = eval('(' + json + ')');
if (!measurePopupInstance) {
var measurePopupInstance = $("").html("Fläche:
" + data.area + " m²
Umfang:
" + data.perimeter + " m
").dialog({
title: "Messinformationen"});
}
else {
measurePopupInstance.html("Fläche:
" + data.area + " m²
Umfang:
" + data.perimeter + " m
").dialog("open");
}
return;
});
return;
/*
if(!mod_measure_win || mod_measure_win == null || mod_measure_win.closed == true){
mod_measure_win = window.open(url,"mod_measure_win","width=200,height=150,resizable=yes");
}
else{
mod_measure_win.document.location.href = url;
}
mod_measure_win.focus();
*/
}
else{
if (!measurePopupInstance) {
var measurePopupInstance = $("").html("Strecke:
" + mod_measure_TotalDist[mod_measure_TotalDist.length-1] + " m").dialog({
title: "Messinformation"
});
}
else {
measurePopupInstance.html("Strecke:
" + mod_measure_TotalDist[mod_measure_TotalDist.length-1] + " m").dialog("open");
}
return;
/*
if(!mod_measure_win || mod_measure_win == null || mod_measure_win.closed == true){
mod_measure_win = window.open("","mod_measure_win","width=200,height=150,resizable=yes");
mod_measure_win.document.open("text/html");
mod_measure_win.document.write("Strecke: " +mod_measure_TotalDist[mod_measure_TotalDist.length-1]+" m");
mod_measure_win.document.close();
}
else{
mod_measure_win.document.open("text/html");
mod_measure_win.document.write("Strecke: " +mod_measure_TotalDist[mod_measure_TotalDist.length-1]+" m");
mod_measure_win.document.close();
}
mod_measure_win.focus();
*/
}
}