/** * * @return * @param $jsMapObject Object */ public function createFromJs($jsMapObject) { $b = $jsMapObject->extent; $srs = $jsMapObject->epsg; $bbox = new Mapbender_bbox($b->min->x, $b->min->y, $b->max->x, $b->max->y, $srs); $this->width = $jsMapObject->width; $this->height = $jsMapObject->height; // there are no more map frames in Mapbender 2.6 $this->frameName = $jsMapObject->elementName; $this->extent = $bbox; if (isset($jsMapObject->isOverview) && $jsMapObject->isOverview == "1") { $this->isOverview = true; } for ($i = 0; $i < count($jsMapObject->wms); $i++) { $currentWms = $jsMapObject->wms[$i]; $wms = new wms(); // // set WMS data // $wms->wms_id = $currentWms->wms_id; $wms->wms_version = $currentWms->wms_version; $wms->wms_title = $currentWms->wms_title; $wms->wms_abstract = $currentWms->wms_abstract; $wms->wms_getmap = $currentWms->wms_getmap; $wms->wms_getfeatureinfo = $currentWms->wms_getfeatureinfo; $wms->wms_getlegendurl = $currentWms->wms_getlegendurl; $wms->wms_filter = $currentWms->wms_filter; $wms->wms_srs = $currentWms->wms_srs; $wms->gui_epsg = $currentWms->gui_epsg; $wms->gui_minx = $currentWms->gui_minx; $wms->gui_miny = $currentWms->gui_miny; $wms->gui_maxx = $currentWms->gui_maxx; $wms->gui_maxy = $currentWms->gui_maxy; $wms->gui_wms_mapformat = $currentWms->gui_wms_mapformat; $wms->gui_wms_featureinfoformat = $currentWms->gui_wms_featureinfoformat; $wms->gui_wms_exceptionformat = $currentWms->gui_wms_exceptionformat; $wms->gui_wms_opacity = $currentWms->gui_wms_opacity; $wms->gui_wms_sldurl = $currentWms->gui_wms_sldurl; $wms->gui_wms_visible = $currentWms->gui_wms_visible; $wms->gui_wms_epsg = $currentWms->gui_wms_epsg; $wms->data_type = $currentWms->data_type; $wms->data_format = $currentWms->data_format; for ($k = 0; $k < count($currentWms->objLayer); $k++) { // the current layer of the JSON map object $currentLayer = $currentWms->objLayer[$k]; // add new layer to WMS $pos = $currentLayer->layer_pos; $parent = $currentLayer->layer_parent; $wms->addLayer($pos, $parent); $newLayerIndex = count($wms->objLayer) - 1; // $newLayer is a short cut to the layer we just added $newLayer = $wms->objLayer[$newLayerIndex]; // set layer data $newLayer->layer_uid = $currentLayer->layer_uid; $newLayer->layer_name = $currentLayer->layer_name; $newLayer->layer_title = $currentLayer->layer_title; $newLayer->layer_dataurl_href = $currentLayer->layer_dataurl_href; $newLayer->layer_pos = $currentLayer->layer_pos; $newLayer->layer_queryable = $currentLayer->layer_queryable; $newLayer->layer_minscale = $currentLayer->layer_minscale; $newLayer->layer_maxscale = $currentLayer->layer_maxscale; $newLayer->layer_metadataurl = $currentLayer->metadataurl; $newLayer->gui_layer_wms_id = $currentLayer->gui_layer_wms_id; // $newLayer->gui_layer_wms_id = $wms->objLayer[0]->layer_uid; $newLayer->gui_layer_status = $currentLayer->gui_layer_status; $newLayer->gui_layer_style = $currentLayer->gui_layer_style; $newLayer->gui_layer_selectable = $currentLayer->gui_layer_selectable; if ($this->isOverview) { preg_match_all("/LAYERS\\=([^&]*)/", $jsMapObject->mapURL[0], $resultMatrix); $layerList = $resultMatrix[1][0]; $layerListArray = explode(",", $layerList); $newLayer->gui_layer_visible = in_array($currentLayer->layer_name, $layerListArray) ? 1 : 0; } else { $newLayer->gui_layer_visible = $currentLayer->gui_layer_visible; } $newLayer->gui_layer_queryable = $currentLayer->gui_layer_queryable; $newLayer->gui_layer_querylayer = $currentLayer->gui_layer_querylayer; $newLayer->gui_layer_minscale = $currentLayer->gui_layer_minscale; $newLayer->gui_layer_maxscale = $currentLayer->gui_layer_maxscale; $newLayer->gui_layer_wfs_featuretype = $currentLayer->gui_layer_wfs_featuretype; $newLayer->gui_layer_title = $currentLayer->gui_layer_title; // BEWARE THIS IS SUPER UGLY CODE $newLayer->layer_epsg = array(); for ($z = 0; $z < count($currentLayer->layer_epsg); $z++) { $newLayer->layer_epsg[$z] = array(); $newLayer->layer_epsg[$z]["epsg"] = $currentLayer->layer_epsg[$z]->epsg; $newLayer->layer_epsg[$z]["minx"] = $currentLayer->layer_epsg[$z]->minx; $newLayer->layer_epsg[$z]["miny"] = $currentLayer->layer_epsg[$z]->miny; $newLayer->layer_epsg[$z]["maxx"] = $currentLayer->layer_epsg[$z]->maxx; $newLayer->layer_epsg[$z]["maxy"] = $currentLayer->layer_epsg[$z]->maxy; } // BEWARE THIS IS SUPER UGLY CODE $newLayer->layer_style = array(); for ($z = 0; $z < count($currentLayer->layer_style); $z++) { $newLayer->layer_style[$z] = array(); $newLayer->layer_style[$z]["name"] = $currentLayer->layer_style[$z]->name ? $currentLayer->layer_style[$z]->name : "default"; $newLayer->layer_style[$z]["title"] = $currentLayer->layer_style[$z]->title ? $currentLayer->layer_style[$z]->title : "default"; $newLayer->layer_style[$z]["legendurl"] = $currentLayer->layer_style[$z]->legendurl; $newLayer->layer_style[$z]["legendurlformat"] = $currentLayer->layer_style[$z]->legendurlformat; } } array_push($this->wmsArray, $wms); } return true; }