flexMap Tipo: Object
Componente para realizar reportes en google maps |
Componente para realizar reportes en google maps u openlayers. Estos reportes utilizan un modo fullscreen. Solo se deben programar dos archivos:
- Archivo que arma el formulario (puede ser manual o un componente flexform) que se "coloca" en el panel lateral. Este formulario permite realizar filtros que son enviados al archivo que genera los puntos
- Archivo que devuelve los puntos (coordenadas) para insertar en el mapa. Este archivo recibe por defecto las variables seteadas en el panel de búsqueda.
Parámetros
urlMap
Path del archivo que devuelve los puntos (o poligonos) a mostrar.
Tipo: Path file
Valor por defecto: false
CODIGO EJEMPLO
{"request"}->{"action"};
$fields=$obj_request->{"request"}->{"fields"};
$checks=$obj_request->{"request"}->{"checks"}; // checks a filtrar
$whereFields=" 1=1 ";
foreach ($fields as $row => $field)
{
$field=$fields[$row]->{"field"};
$type=$fields[$row]->{"type"};
$value=$fields[$row]->{"value"};
$required=$fields[$row]->{"required"};
$oper=$fields[$row]->{"oper"};
if($value!="")
{
$whereFields.=" and ".getSearchItem($oper,$type,$field,$value);
}
}
foreach ($checks as $row => $field)
{
$idCheckTree=$checks[$row]->{"idCheckTree"};
$idCheckTree=str_replace("mapa_tree_","",$idCheckTree);
$values=$checks[$row]->{"values"};
if($idCheckTree!="")
{
foreach ($values as $rowV => $value)
{
$value=$values[$rowV]->{"value"};
/*if($value!="")
{
if($whereChecks=="")
$whereChecks.= " $idCheckTree=$value ";
else
$whereChecks.= " or $idCheckTree=$value ";
}*/
}
}
}
if($whereChecks!="")
$whereChecks=" ($whereChecks) ";
if($whereChecks!="" && $whereChecks!="")
$whereFields="and $whereFields";
$where = " where $whereChecks $whereFields AND trim(sysname01_coordenadas)!=''";
$qr="Select * from sys_name_01_table $where";
$debuger="$qr";
$result = flex_query($qr,$link_msq);
$num_rows = flex_num_rows($result);
if ($num_rows>0)
{
while ($row_loc = flex_fetch_assoc($result))
{
$id=$row_loc["id_sysname01"];
$coords=$row_loc["sysname01_coordenadas"];
if(trim($coords)!="")
{
$points.= "";
$points.= "$id ";
$points.= "#CC0000 "; // id uses global icons from FW
$points.= "media/specials/contact.png "; // if uses icons from specials
$points.= "";
$points.= "$coords ";
$points.= " ";
}
}
}
/*
$circles .= "";
$circles .= "".$id."_cob_".$i." ";
$circles .= "$coords ";
$circles .= "$radius ";
$circles .= "$nodes ";
$circles .= "$liColor ";
$circles .= "$liWidth ";
$circles .= "$liOpa ";
$circles .= "$fillColor ";
$circles .= "$fillOpa ";
$circles .= " ";
$polylines .= "";
$polylines .= "$id ";
$polylines .= "";
$polylines .= "#000 ";
$polylines .= "$coords ";
$polylines .= " ";
$polygons .= "";
$polygons .= "$id ";
$polygons .= "";
$polygons .= "#808080 ";
//$polygons .= "modulos/mapa_clientes/php/ver_mapa_detalle.php ";
$polygons .= "$coords ";
$polygons .= " ";
*/
$qr="Select sysname02_nombre as category,count(*) as count from sys_name_01_table
inner join sys_name_02_table on rela_sysname02=id_sysname0102
$where group by scocont51_nombre";
$result = flex_query($qr,$link_msq);
$num_rows = flex_num_rows($result);
if ($num_rows>0)
{
while ($row = flex_fetch_assoc($result))
{
$count=$row["count"];
$total=$total+$count;
$category=$row["category"];
$icon="media/system/marker.png";
$stats .= "";
$stats .= "$count ";
$stats .= "$icon ";
$stats .= " ";
$stats .= " ";
}
}
else
{
$total="0";
}
$xml = "
";
$xml .= "";
$xml .= " ";
$xml .= "";
$xml .= $points;
$xml .= " ";
$xml .= "";
$xml .= "$total ";
$xml .= "";
$xml .= $stats;
$xml .= " ";
$xml .= " ";
$xml .= " ";
echo $xml;
?>
autoload
Permite que al cargar el mapa se carguen los resultados del reporte (urlMap)
Tipo: Boolean
Valor por defecto: false
source
Tipo: String
Valor por defecto: google
Valores aceptados: google | openlayers
method
Método del envio de datos a URL
Tipo: String
Valor por defecto: POST
accordion
Convierte al panel en un acordion (jquery). Para esto se deberá incluir en el panel una etiqueta h3 y un div por cada sección del panel
Tipo: Boolean
Valor por defecto: true
titleFilter
Texto a colocar en el botón que realiza el post al urlMap
Tipo: String
Valor por defecto: Actualizar mapa
titleStats
Texto a colocar en el contador de registros.
Tipo: String
Valor por defecto: registros
urlClickPolygon
Tipo: Path file
Valor por defecto: false
urlClickPoint
Url del archivo a abrir cuando se hace clic en un punto del mapa
Tipo: Path file
Valor por defecto: 'path/to/file'
panel
Tipo: Object
Valor por defecto: []
CODIGO EJEMPLO
panel:{
url:'{urlPanel}',
position:'left',
buttons:{
center:true,
submit:true,
reset:true,
},
},
Subparámetros de panel
url
Path del archivo que contiene el Panel de filtros del reporte. El html se coloca en el formulario de búsqueda del componente
Tipo: Path file
Valor por defecto:
false
position
Tipo: String
Valor por defecto:
left
Valores aceptados: left | top
buttons
Tipo: Object
Valor por defecto:
[]
Subparámetros de buttons
center
Tipo: Boolean
Valor por defecto:
true
submit
Tipo: Object
Valor por defecto:
true
clear
Tipo: Boolean
Valor por defecto:
true
fullscreen
Tipo: Boolean
Valor por defecto: true
closeMod
Permite CERRAR el módulo donde se encuentra el componente
Tipo: Boolean
Valor por defecto: true
clusterer
Configuración del cluster de puntos
Tipo: Object
Valor por defecto: []
Subparámetros de clusterer
enable
Tipo: Boolean
Valor por defecto:
true
maxZoom
Tipo: Integer
Valor por defecto:
12
gridSize
Tipo: Integer
Valor por defecto:
20
showHeatMap
Tipo: Boolean
Valor por defecto: false
noData
Tipo: String
Valor por defecto: No se encontraron registros.
titleSearchLoc
Tipo: String
Valor por defecto: Buscar dirección o localidad
Eventos
onSuccess
Agrega una función a ejecutar cuando se termina de cargar el resultado del reporte en el mapa
Tipo: String function
Valor por defecto: false
API - Funciones Accesibles
flexMapReload
Pertmie realizar la busqueda de resultados al urlMap enviando los datos del formulario de filtros
$("#map").flexMapReload()
Ejemplos
ver_mapa.html
<script type="text/javascript">
$(document).ready(function(){
$("#map_{mapId}").flexmap({
titleFilter:'{titleFilter}',
titleStats:'{titleStats}',
autoload:{autoload},
accordion:{accordion},
urlClickPoint:'{urlClickPoint}',
urlPanel:'{urlPanel}',
urlMap:'{urlMap}'
});
});
</script>
<div id="map_{mapId}"></div>
ver_mapa.php
set_file(array(
"ver" => "ver_mapa.html",
));
$mapId="mapa_reporte";
$urlClickPoint="modulos/mapa_reporte/php/ver_mapa_detalle.php";
$urlPanel="modulos/mapa_reporte/php/panel.php";
$urlMap="modulos/mapa_reporte/php/getMap.php";
$titleFilter="Buscar";
$titleStats="registros";
$accordion="true";
$autoload="false";
$t->set_var("mapId",$mapId);
$t->set_var("urlClickPoint",$urlClickPoint);
$t->set_var("urlPanel",$urlPanel);
$t->set_var("urlMap",$urlMap);
$t->set_var("titleFilter",$titleFilter);
$t->set_var("titleStats",$titleStats);
$t->set_var("accordion",$accordion);
$t->set_var("autoload",$autoload);
$t->pparse("OUT", "ver");
?>
Actualizaciones
- 4.8 Funcionalidad: Se agrega la opción de visualizar polígonos con openlayers
04-08-2020 - 4.8 Bug: Se corrige el componente flexMap. Ahora el id será unico por formulario.
Para obtener el valor via JS se deberá recuperar via attr name (al igual que date, datetime, etc)
22-07-2020 - 4.7 Funcionalidad: se agrega la funcionarlidad de heatMap de google
08-04-2020