/** * Guarda un elemento de una capa */ public function guardarItemSubcapa() { $item = $this->uri->uri_to_assoc(); $id_item = $item['item']; $params = $this->input->post(); $id_subcapa = $params['id_subcapa']; $data = array(); foreach ($params["propiedad_nombre"] as $key => $nombre) { $propiedades[$nombre] = $params["propiedad_valor"][$key]; } $this->load->library("capa/elemento/capa_elemento_locacion", $propiedades); $this->capa_elemento_locacion->process(); $data["poligono_comuna"] = $this->capa_elemento_locacion->getComuna(); $data["poligono_provincia"] = $this->capa_elemento_locacion->getProvincia(); $data["poligono_region"] = $this->capa_elemento_locacion->getRegion(); $data["poligono_capitem"] = $params["id_subcapa"]; /* verificar valores de region y comuna */ if (isset($propiedades['REGION']) and is_numeric($propiedades['REGION'])) { $this->load->model('region_model', 'RegionModel'); $region = $this->RegionModel->getById($propiedades['REGION']); $propiedades['REGION'] = $region->reg_c_nombre; } if (isset($propiedades['COMUNA']) and is_numeric($propiedades['COMUNA'])) { $this->load->model('comuna_model', 'ComunaModel'); $comuna = $this->ComunaModel->getById($propiedades['COMUNA']); $propiedades['COMUNA'] = $comuna->com_c_nombre; } $data["poligono_propiedades"] = serialize($propiedades); switch ($params["tipo_elemento"]) { case "Point": $geometria = array("type" => "Point", "coordinates" => array(0 => $params["form_coordenadas_longitud"], 1 => $params["form_coordenadas_latitud"])); $data["poligono_geometria"] = serialize($geometria); break; case "Polygon": $coordenadas = Zend_Json::decode($params["coordenadas"]); $geo = array("type" => "Polygon", "coordinates" => array()); foreach ($coordenadas as $latLng) { $geo["coordinates"][0][] = array($latLng["lng"], $latLng["lat"]); } $data["poligono_geometria"] = serialize($geo); break; case "MultiPolygon": $coordenadas = Zend_Json::decode($params["coordenadas"]); $geo = array("type" => "MultiPolygon", "coordinates" => array()); foreach ($coordenadas as $key => $punto) { foreach ($punto as $latLng) { $geo["coordinates"][0][$key][] = array($latLng["lng"], $latLng["lat"]); } } $data["poligono_geometria"] = serialize($geo); break; default: break; } $json = array(); if ($id_item > 0) { $guardar = $this->capa_detalle_elemento_model->update($data, $id_item); } else { $guardar = $this->capa_detalle_elemento_model->insert($data); } if ($guardar) { $json['estado'] = true; $json['mensaje'] = "Datos guardados correctamente"; } else { $json['estado'] = false; $json['mensaje'] = "Hubo un problema al guardar los datos. Intente nuevamente"; } echo json_encode($json); }