[Mapbender-commits] r2279 - branches/nimix_dev/http/javascripts
svn_mapbender at osgeo.org
svn_mapbender at osgeo.org
Thu Mar 20 08:58:08 EDT 2008
Author: nimix
Date: 2008-03-20 08:58:08 -0400 (Thu, 20 Mar 2008)
New Revision: 2279
Modified:
branches/nimix_dev/http/javascripts/tooltip.php
Log:
wfs requests through tooltip
Modified: branches/nimix_dev/http/javascripts/tooltip.php
===================================================================
--- branches/nimix_dev/http/javascripts/tooltip.php 2008-03-20 12:56:52 UTC (rev 2278)
+++ branches/nimix_dev/http/javascripts/tooltip.php 2008-03-20 12:58:08 UTC (rev 2279)
@@ -18,13 +18,28 @@
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+$wfs_conf_filename = "wfs_default.conf";
+include '../include/dyn_php.php';
+$fname = dirname(__FILE__) . "/../../conf/" . $wfs_conf_filename;
+if (file_exists($fname)) {
+ include($fname);
+}
+else {
+ $e = new mb_exception("tooltip.php: Configuration file " . $wfs_conf_filename . " not found.");
+}
+
echo "var tooltipTarget ='".$e_target[0]."';";
+
+include '../include/dyn_js.php';
?>
var testttt=0;
var tooltipWin=null;
+var point;
+var mb_wfs_tolerance = 20;
+var numberOfFinishedAjaxCalls = 0;
+buttonWfs_toDigitize_on ="0";
eventInit.register(function(){
- console.log($("#mapframe1").length+"init");
$(window.frames["mapframe1"].document).mousemove(function(event){
eventMouseMove.trigger();
mb_getMousePos(event,"mapframe1");
@@ -35,14 +50,224 @@
if(tooltipWin&&tooltipWin.isVisible())
tooltipWin.destroy();
testttt++;
- setTimeout("if(testttt=="+testttt+")showBalloon();",2000);
+ setTimeout("if(testttt=="+testttt+")requestWfs();",500);
});
-function showBalloon(){
+function showWMSBalloon(){
x=clickX+parseInt(document.getElementById("mapframe1").style.left);
y=clickY+parseInt(document.getElementById("mapframe1").style.top);
if(tooltipWin&&tooltipWin.isVisible())
tooltipWin.destroy();
- tooltipWin = new mb_popup({title:"Test Tooltip",width:200,height:120,balloon:true,left:x,top:y});
+ var ind = getMapObjIndexByName("mapframe1");
+ req = mb_mapObj[ind].getFeatureInfoRequests({x:clickX,y:clickY});
+ if(req)
+ tooltipWin = new mb_popup({url:req[0],title:"Feature Info",width:270,height:200,balloon:true,left:x,top:y});
tooltipWin.show();
}
+
+function showWFSBalloon(geom){
+ x=point.x+parseInt(document.getElementById("mapframe1").style.left);
+ y=point.y+parseInt(document.getElementById("mapframe1").style.top);
+ if(tooltipWin&&tooltipWin.isVisible())
+ tooltipWin.destroy();
+ tooltipWin = new mb_popup({title:searchPopupTitle,html:createListOfGeometries(),width:270,height:150,balloon:true,left:x,top:y});
+ tooltipWin.show();
+}
+
+function requestWfs(){
+ point = new Point(clickX, clickY);
+ if(tooltipWin&&tooltipWin.isVisible())
+ tooltipWin.destroy();
+
+ var ind = getMapObjIndexByName("mapframe1");
+ var db_wfs_conf_id = [];
+ js_wfs_conf_id = [];
+ _geomArray = new GeometryArray();
+
+ if (typeof(resultGeometryPopup) != "undefined") {
+ resultGeometryPopup.hide();
+ }
+
+ wfs_config = window.frames["wfs_conf"].get_wfs_conf();
+ for (var i=0; i<mb_mapObj[ind].wms.length; i++){
+ for(var ii=0; ii<mb_mapObj[ind].wms[i].objLayer.length; ii++){
+ var o = mb_mapObj[ind].wms[i].objLayer[ii];
+ if(o.gui_layer_wfs_featuretype != '' && o.gui_layer_querylayer == '1'){
+ if(o.checkScale(mb_mapObj[ind]))
+ db_wfs_conf_id[db_wfs_conf_id.length] = o.gui_layer_wfs_featuretype;
+ }
+ }
+ }
+ for(var i=0; i<db_wfs_conf_id.length; i++){
+ for(var ii=0; ii<wfs_config.length; ii++){
+ if(wfs_config[ii]['wfs_conf_id'] == db_wfs_conf_id[i]) js_wfs_conf_id[js_wfs_conf_id.length] = ii;
+ }
+ }
+
+ numberOfAjaxCalls_ = js_wfs_conf_id.length;
+
+
+
+ var buffer = mb_wfs_tolerance/2;
+ var mapPosXAddPix = clickX + buffer;
+ var mapPosYAddPix = clickY + buffer;
+ var mapPosXRemovePix = clickX - buffer;
+ var mapPosYRemovePix = clickY - buffer;
+ var realWorld1 = makeClickPos2RealWorldPos("mapframe1",mapPosXRemovePix,mapPosYRemovePix);
+ var realWorld2 = makeClickPos2RealWorldPos("mapframe1",mapPosXAddPix,mapPosYRemovePix);
+ var realWorld3 = makeClickPos2RealWorldPos("mapframe1",mapPosXAddPix,mapPosYRemovePix);
+ var realWorld4 = makeClickPos2RealWorldPos("mapframe1",mapPosXRemovePix,mapPosYAddPix);
+ for(var i=0; i<js_wfs_conf_id.length; i++){
+ var url = wfs_config[js_wfs_conf_id[i]]['wfs_getfeature'];
+ param = "service=wfs&request=getFeature&version=1.0.0&typename="+ wfs_config[js_wfs_conf_id[i]]['featuretype_name']+"&filter=";
+ var filter = "<ogc:Filter xmlns:ogc='http://ogc.org' xmlns:gml='http://www.opengis.net/gml'>";
+ filter += "<Intersects><ogc:PropertyName>";
+ for(var j=0; j<wfs_config[js_wfs_conf_id[i]]['element'].length; j++){
+ if(wfs_config[js_wfs_conf_id[i]]['element'][j]['f_geom'] == 1){
+ filter += wfs_config[js_wfs_conf_id[i]]['element'][j]['element_name'];
+ }
+ }
+ filter += "</ogc:PropertyName><gml:Polygon srsName='4326'><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>";
+ filter += realWorld1[0] + "," + realWorld1[1] + " " + realWorld2[0] + "," + realWorld2[1] + " ";
+ filter += realWorld3[0] + "," + realWorld3[1] + " " + realWorld4[0] + "," + realWorld4[1] + " " + realWorld1[0] + "," + realWorld1[1];
+ filter += "</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></Intersects></ogc:Filter>";
+ url += param;
+ mb_get_geom_(url, filter, i, wfs_config[js_wfs_conf_id[i]]['featuretype_name'], js_wfs_conf_id[i], db_wfs_conf_id[i]);
+ }
+ return true;
+}
+function mb_get_geom_(url, filter, index, typename, js_wfs_conf_id, db_wfs_conf_id) {
+
+ mb_ajax_post("../" + wfsResultModulePath + wfsResultModuleFilename,{'url':url,'filter':filter,'typename':typename,'js_wfs_conf_id':js_wfs_conf_id, 'db_wfs_conf_id':db_wfs_conf_id},function(js_code,status){
+ if (js_code) {
+ eval(js_code);
+ }
+ if (typeof(geom) == "undefined") {
+ var geom = new GeometryArray();
+ }
+ checkIfAllAjaxCallsFinished_(geom);
+ });
+}
+
+function checkIfAllAjaxCallsFinished_ (geom) {
+ numberOfFinishedAjaxCalls++;
+ if (typeof(geom) == 'object'){
+ _geomArray.union(geom);
+ }
+ if (numberOfFinishedAjaxCalls == numberOfAjaxCalls_) {
+ numberOfFinishedAjaxCalls = 0;
+ if(_geomArray.count()>0)
+ showWFSBalloon(_geomArray);
+ }
+}
+
+function createListOfGeometries(){
+ if(_geomArray.count()>1){
+ var listOfGeom = "<table style='background-color:#EEEEEE;'>\n";
+ if (_geomArray.count() > 0) {
+ if(buttonWfs_toDigitize_on==1){
+ listOfGeom += "<tr><td style='color:black;font-size:12px;'>edit all</td>\n";
+ listOfGeom += "<td><img title='edit all' src='"+buttonWfs_toDigitize_src+"' style='cursor:pointer' onclick='appendGeometryArrayToDigitize(_geomArray);'></img>";
+ listOfGeom += "</td>\n</tr>\n";
+ listOfGeom += "<tr>\n<td> </td>\n</tr>\n";
+ }
+ for (var i = 0 ; i < _geomArray.count(); i ++) {
+ if (_geomArray.get(i).get(-1).isComplete()) {
+ listOfGeom += "\t<tr>\n\t\t<td style = 'color:blue;font-size:12px;cursor:pointer;'\n";
+ listOfGeom += "\t\t\t onmouseover='mb_wfs_perform(\"over\",_geomArray.get("+i+"));' ";
+ listOfGeom += " onmouseout='mb_wfs_perform(\"out\",_geomArray.get("+i+"))' ";
+ listOfGeom += " onclick='mb_wfs_perform(\"click\",_geomArray.get("+i+"));' ";
+ var geomName = getListTitle(_geomArray.get(i));
+ //if (_geomArray.get(i).geomType == geomType.polygon) {geomName += "(polygon)";}
+ //else if (_geomArray.get(i).geomType == geomType.line) {geomName += "(line)";}
+ //else if (_geomArray.get(i).geomType == geomType.point) {geomName += "(point)";}
+ listOfGeom += ">" + geomName +"</td>";
+ if(buttonWfs_toDigitize_on==1){
+ listOfGeom += "<td><img title='edit geometry object' src='"+buttonWfs_toDigitize_src+"' style='cursor:pointer' onclick='appendGeometryToDigitize("+i+");'></img></td>";
+ }
+ listOfGeom += "\t\t</tr>\n";
+ }
+ }
+ }
+ listOfGeom += "</table>\n";
+ return listOfGeom;
+ }
+ else{
+ geometryIndex = 0;
+ wfsConf = get_complete_wfs_conf();
+ var wfsConfIndex = _geomArray.get(0).wfs_conf;
+ var currentWfsConf = wfsConf[wfsConfIndex];
+
+ var resultHtml = "";
+ resultHtml += "<table style='background-color:#EEEEEE;'>\n";
+ for (var i = 0 ; i <currentWfsConf.element.length; i ++) {
+ if(currentWfsConf.element[i].f_show_detail==1){
+ if( _geomArray.get(geometryIndex).e.getElementValueByName(currentWfsConf.element[i].element_name)!=false){
+ //console.log(currentWfsConf.element[i].element_name+"---"+currentWfsConf.element[i].f_respos);
+ resultHtml +="<tr><td>\n";
+ resultHtml += currentWfsConf.element[i].f_label;
+ resultHtml +="</td>\n";
+ resultHtml += "<td>\n";
+ var elementVal = _geomArray.get(geometryIndex).e.getElementValueByName(currentWfsConf.element[i].element_name);
+ if(currentWfsConf.element[i].f_form_element_html.indexOf("href")!=-1){
+ var setUrl = currentWfsConf.element[i].f_form_element_html.replace(/href\s*=\s*['|"]\s*['|"]/, "href='"+elementVal+"' target='_blank'");
+ if(setUrl.match(/><\/a>/)){
+ var newLink = setUrl.replace(/><\/a>/, ">"+elementVal+"</a>");
+ }
+ else{
+ var newLink = setUrl;
+ }
+ if(openLinkFromSearch=='1'){
+ window.open(elementVal, elementVal,"width=500, height=400,left=100,top=100,scrollbars=yes");
+ }
+ resultHtml += newLink;
+ }
+ else{
+ resultHtml += elementVal;
+ }
+ resultHtml += "</td></tr>\n";
+ }
+ }
+ }
+ resultHtml += "</table>\n";
+ return resultHtml;
+ }
+}
+
+function isValidWfsConfIndex (wfsConf, wfsConfIndex) {
+ return (typeof(wfsConfIndex) == "number" && wfsConfIndex >=0 && wfsConfIndex < wfsConf.length);
+}
+
+function Numsort (a, b) {
+ return a - b;
+}
+
+function getListTitle (geom) {
+ wfsConfId = geom.wfs_conf;
+ wfsConf = window.frames["wfs_conf"].get_wfs_conf();
+ if (isValidWfsConfIndex(wfsConf, wfsConfId)) {
+ var resultArray = [];
+ var resultName = "";
+ for (var i = 0 ; i < wfsConf[wfsConfId]['element'].length ; i++) {
+ if (wfsConf[wfsConfId]['element'][i]['f_show'] == 1 && geom.e.getElementValueByName(wfsConf[wfsConfId]['element'][i]['element_name']) !=false) {
+ var pos = wfsConf[wfsConfId]['element'][i]['f_respos'];
+ if (typeof(resultArray[pos]) != "undefined") {
+ resultArray[pos] += " " + geom.e.getElementValueByName(wfsConf[wfsConfId]['element'][i]['element_name']);
+ }
+ else {
+ resultArray[pos] = geom.e.getElementValueByName(wfsConf[wfsConfId]['element'][i]['element_name']);
+ }
+ resultName += geom.e.getElementValueByName(wfsConf[wfsConfId]['element'][i]['element_name']) + " ";
+ }
+ }
+ resultArray.sort(Numsort);
+ var resultName = resultArray.join(" ");
+ if (resultName == "") {
+ resultName = wfsConf[wfsConfId]['g_label'];
+ }
+ return resultName;
+ }
+ else {
+ return msgObj.digitizeDefaultGeometryName;
+ }
+}
More information about the Mapbender_commits
mailing list