cdiego

video_final_google_maps

Jan 12th, 2014
1,908
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 16.70 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <head>
  3.     <style>
  4.         #mapa{
  5.             width: 400px;
  6.             height: 400px;
  7.             float:left;
  8.             background: green;
  9.         }
  10.         #infor{
  11.             width: 400px;
  12.             height: 400px;
  13.             float:left;
  14.         }
  15.     </style>
  16. <!--IMPORTANTE RESPETAR EL ORDEN -->
  17. <!--ESTILOS DE BOOSTRAP -->
  18. <link href="css/bootstrap.min.css" rel="stylesheet" />
  19. <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
  20. <script type="text/javascript" src="http://code.jquery.com/jquery-2.0.3.min.js" ></script>
  21. <!--ARCHIVOS JAVASCRIPT DE BOOTSTRAP -->
  22. <script type="text/javascript" src="js/bootstrap.min.js" ></script>
  23. <script>
  24.     //VARIABLES GENERALES
  25.         //declaras fuera del ready de jquery
  26.     var nuevos_marcadores = [];
  27.     var marcadores_bd= [];
  28.     var mapa = null; //VARIABLE GENERAL PARA EL MAPA
  29.     //FUNCION PARA QUITAR MARCADORES DE MAPA
  30.     function limpiar_marcadores(lista)
  31.     {
  32.         for(i in lista)
  33.         {
  34.             //QUITAR MARCADOR DEL MAPA
  35.             lista[i].setMap(null);
  36.         }
  37.     }
  38.     $(document).on("ready", function(){
  39.        
  40.         //VARIABLE DE FORMULARIO
  41.         var formulario = $("#formulario");
  42.        
  43.         var punto = new google.maps.LatLng(-13.163622,-72.545926);
  44.         var config = {
  45.             zoom:4,
  46.             center:punto,
  47.             mapTypeId: google.maps.MapTypeId.ROADMAP
  48.         };
  49.         mapa = new google.maps.Map( $("#mapa")[0], config );
  50.  
  51.         google.maps.event.addListener(mapa, "click", function(event){
  52.            var coordenadas = event.latLng.toString();
  53.            
  54.            coordenadas = coordenadas.replace("(", "");
  55.            coordenadas = coordenadas.replace(")", "");
  56.            
  57.            var lista = coordenadas.split(",");
  58.            
  59.            var direccion = new google.maps.LatLng(lista[0], lista[1]);
  60.            //PASAR LA INFORMACI�N AL FORMULARIO
  61.            formulario.find("input[name='titulo']").focus();
  62.            formulario.find("input[name='cx']").val(lista[0]);
  63.            formulario.find("input[name='cy']").val(lista[1]);
  64.            
  65.            
  66.            var marcador = new google.maps.Marker({
  67.                //titulo:prompt("Titulo del marcador?"),
  68.                position:direccion,
  69.                map: mapa,
  70.                animation:google.maps.Animation.DROP,
  71.                draggable:false
  72.            });
  73.            //VIDEO 15
  74.            $("#collapseOne").collapse('show');
  75.            $("#collapseTwo").collapse('hide');
  76.            //ALMACENAR UN MARCADOR EN EL ARRAY nuevos_marcadores
  77.            nuevos_marcadores.push(marcador);
  78.            
  79.            google.maps.event.addListener(marcador, "click", function(){
  80.  
  81.            });
  82.            
  83.            //BORRAR MARCADORES NUEVOS
  84.            limpiar_marcadores(nuevos_marcadores);
  85.            marcador.setMap(mapa);
  86.         });
  87.         $("#btn_grabar").on("click", function(){
  88.             //INSTANCIAR EL FORMULARIO
  89.             var f = $("#formulario");
  90.            
  91.             //VALIDAR CAMPO TITULO
  92.             if(f.find("input[name='titulo']").val().trim()=="")
  93.             {
  94.                 alert("Falta título");
  95.                 return false;
  96.             }
  97.             //VALIDAR CAMPO CX
  98.             if(f.find("input[name='cx']").val().trim()=="")
  99.             {
  100.                 alert("Falta Coordenada X");
  101.                 return false;
  102.             }
  103.             //VALIDAR CAMPO CY
  104.             if(f.find("input[name='cy']").val().trim()=="")
  105.             {
  106.                 alert("Falta Coordenada Y");
  107.                 return false;
  108.             }
  109.             //FIN VALIDACIONES
  110.            
  111.             if(f.hasClass("busy"))
  112.             {
  113.                 //Cuando se haga clic en el boton grabar
  114.                 //se le marcar� con una clase 'busy' indicando
  115.                 //que ya se ha presionado, y no permitir que se
  116.                 //realiCe la misma operaci�n hasta que esta termine
  117.                 //SI TIENE LA CLASE BUSY, YA NO HARA NADA
  118.                 return false;
  119.             }
  120.             //SI NO TIENE LA CLASE BUSY, SE LA PONDREMOS AHORA
  121.             f.addClass("busy");
  122.             //Y CUANDO QUITAR LA CLASE BUSY?
  123.             //CUANDO SE TERMINE DE PROCESAR ESTA SOLICITUD
  124.             //ES DECIR EN EL EVENTO COMPLETE
  125.            
  126.             var loader_grabar = $("#loader_grabar");
  127.            $.ajax({
  128.                type:"POST",
  129.                url:"iajax.php",
  130.                dataType:"JSON",
  131.                data:f.serialize()+"&tipo=grabar",
  132.               success:function(data){
  133.                   //alert(data.mensaje);
  134.                    
  135.                    listar();
  136.                },
  137.                beforeSend:function(){
  138.                    //Notificar al usuario mientras que se procesa su solicitud
  139.                    loader_grabar.removeClass("label-success").addClass("label label-warning")
  140.                    .text("Procesando...").slideDown();
  141.                },
  142.                complete:function(){
  143.                    //QUITAR LA CLASE BUSY
  144.                    f.removeClass("busy");
  145.                    f[0].reset();
  146.                    //[0] jquery trabaja con array de elementos javascript no
  147.                    //asi que se debe especificar cual elemento se har� reset
  148.                    //capricho de javascript
  149.                    //AHORA PERMITIR� OTRA VEZ QUE SE REALICE LA ACCION
  150.                    //Notificar que se ha terminado de procesar
  151.                    loader_grabar.removeClass("label-warning").addClass("label-success")
  152.                    .text("Grabado OK").delay(4000).slideUp();
  153.                }
  154.            });
  155.            return false;
  156.         });
  157.         //BORRAR
  158.         $("#btn_borrar").on("click", function(){
  159.             var f_eliminar = $("#formulario_eliminar");
  160.             $.ajax({
  161.                type:"POST",
  162.                url:"iajax.php",
  163.                data:"id="+f_eliminar.find("input[name='id']").val()+"&tipo=borrar",
  164.               dataType:"JSON",
  165.               success:function(data){
  166.                   if(data.estado=="ok")
  167.                    {
  168.                        limpiar_marcadores(nuevos_marcadores);
  169.                         alert(data.mensaje);
  170.                         f_eliminar[0].reset();
  171.                         listar();
  172.                     }
  173.                     else
  174.                     {
  175.                         alert(data.mensaje);
  176.                     }
  177.                },
  178.                beforeSend:function(){
  179.                    
  180.                },
  181.                complete:function(){
  182.                    
  183.                }
  184.             });
  185.         });
  186.  
  187.         //ACTUALIZAR
  188.         $("#btn_actualizar").on("click", function(){
  189.             var f_eliminar = $("#formulario_eliminar");
  190.             $.ajax({
  191.                type:"POST",
  192.                url:"iajax.php",
  193.                data:f_eliminar.serialize()+"&tipo=actualizar",
  194.               dataType:"JSON",
  195.               success:function(data){
  196.                   if(data.estado=="ok")
  197.                    {
  198.                        limpiar_marcadores(nuevos_marcadores);
  199.                         alert(data.mensaje);
  200.                         f_eliminar[0].reset();
  201.                         listar();
  202.                     }
  203.                     else
  204.                     {
  205.                         alert(data.mensaje);
  206.                     }
  207.                },
  208.                beforeSend:function(){
  209.                    
  210.                },
  211.                complete:function(){
  212.                    
  213.                }
  214.             });
  215.         });
  216.         //CARGAR PUNTOS AL TERMINAR DE CARGAR LA P�GINA
  217.         listar();//FUNCIONA, AHORA A GRAFICAR LOS PUNTOS EN EL MAPA
  218.     });
  219.     //FUERA DE READY DE JQUERY
  220.     //FUNCTION PARA RECUPERAR PUNTOS DE LA BD
  221.     function listar()
  222.     {
  223.         //ANTES DE LISTAR MARCADORES
  224.         //SE DEBEN QUITAR LOS ANTERIORES DEL MAPA
  225.        limpiar_marcadores(marcadores_bd);
  226.        var f_eliminar = $("#formulario_eliminar");
  227.        $.ajax({
  228.                type:"POST",
  229.                url:"iajax.php",
  230.                dataType:"JSON",
  231.                data:"&tipo=listar",
  232.               success:function(data){
  233.                   if(data.estado=="ok")
  234.                    {
  235.                        //alert("Hay puntos en la BD");
  236.                         $.each(data.mensaje, function(i, item){
  237.                             //OBTENER LAS COORDENADAS DEL PUNTO
  238.                             var posi = new google.maps.LatLng(item.cx, item.cy);//bien
  239.                             //CARGAR LAS PROPIEDADES AL MARCADOR
  240.                             var marca = new google.maps.Marker({
  241.                                 idMarcador:item.IdPunto,
  242.                                 position:posi,
  243.                                 titulo: item.Titulo,
  244.                                 cx:item.cx,
  245.                                 cy:item.cy
  246.                             });
  247.                             //AGREGAR EVENTO CLICK AL MARCADOR
  248.                             google.maps.event.addListener(marca, "click", function(){
  249.                                 $("#collapseOne").collapse('hide');
  250.                                 $("#collapseTwo").collapse('show');
  251.                                //alert("Hiciste click en "+marca.idMarcador + " - " + marca.titulo) ;
  252.                                //SOLO MOVER CUANDO SE MARQUE EL CHECKBOX DEL FORMULARIO
  253.                                if($("#opc_edicion").prop("checked"))
  254.                                
  255.                                {
  256.                                     //HACER UN MARCADOR DRAGGABLE
  257.                                     marca.setOptions({draggable: true});
  258.  
  259.                                     google.maps.event.addListener(marca, 'dragend', function(event) {
  260.                                         //AL FINAL DE MOVE EL MARCADOR
  261.                                         //ESTE MISMO YA SE ACTUALIZA CON LAS NUEVAS COORDENADAS
  262.                                         //alert(marca.position);
  263.                                         var coordenadas = event.latLng.toString();
  264.                                         coordenadas = coordenadas.replace("(", "");
  265.                                         coordenadas = coordenadas.replace(")", "");
  266.                                         var lista = coordenadas.split(",");
  267.                                         f_eliminar.find("input[name='cx']").val(lista[0]);
  268.                                         f_eliminar.find("input[name='cy']").val(lista[1]);
  269.                                     } );
  270.                                 }
  271.                                 else
  272.                                 {
  273.                                    
  274.                                     f_eliminar.find("input[name='titulo']").val(marca.titulo);
  275.                                     f_eliminar.find("input[name='cx']").val(marca.cx);
  276.                                     f_eliminar.find("input[name='cy']").val(marca.cy);
  277.                                     f_eliminar.find("input[name='id']").val(marca.idMarcador);
  278.                                 }
  279.                                 limpiar_marcadores(nuevos_marcadores);
  280.                             });
  281.                             //AGREGAR EL MARCADOR A LA VARIABLE MARCADORES_BD
  282.                             marcadores_bd.push(marca);
  283.                             //UBICAR EL MARCADOR EN EL MAPA
  284.                             marca.setMap(mapa);
  285.                         });
  286.                     }
  287.                 else
  288.                     {
  289.                         alert("NO hay puntos en la BD");
  290.                     }
  291.                },
  292.                beforeSend:function(){
  293.                    
  294.                },
  295.                complete:function(){
  296.                    
  297.                }
  298.            });
  299.     }
  300.     //PLANTILLA AJAX
  301.    
  302. </script>
  303. </head>
  304. <body>
  305.     <div id="mapa">
  306.         <h2>Aquí ira el mapa!</h2>
  307.     </div>
  308.     <div id="infor">
  309.         <div class="accordion" id="accordion2">
  310.             <div class="accordion-group">
  311.               <div class="accordion-heading">
  312.                 <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">
  313.                   Agregar
  314.                 </a>
  315.               </div>
  316.               <div id="collapseOne" class="accordion-body collapse in">
  317.                 <div class="accordion-inner">
  318.                     <form id="formulario">
  319.                         <table>
  320.                             <tr>
  321.                                 <td>Título</td>
  322.                                 <td><input type="text" class="form-control"  name="titulo" autocomplete="off"/></td>
  323.                             </tr>
  324.                             <tr>
  325.                                 <td>Coordenada X</td>
  326.                                 <td><input type="text" class="form-control" readonly  name="cx" autocomplete="off"/></td>
  327.                             </tr>
  328.                             <tr>
  329.                                 <td>Coordenada Y</td>
  330.                                 <td><input type="text" class="form-control"  readonly name="cy" autocomplete="off"/></td>
  331.                             </tr>
  332.                             <!-- Aqui estar� se colocaran los mensajes para el usuario -->
  333.                             <tr>
  334.                                 <td></td>
  335.                                 <td><span id="loader_grabar" class=""></span></td>
  336.                             </tr>
  337.                             <tr>
  338.                                 <td><button type="button" id="btn_grabar" class="btn btn-success btn-sm">Grabar</button></td>
  339.                                 <td><button type="button" class="btn btn-danger btn-sm">Cancelar</button></td>
  340.                             </tr>
  341.                         </table>
  342.                     </form>
  343.                 </div>
  344.               </div>
  345.             </div>
  346.             <div class="accordion-group">
  347.               <div class="accordion-heading">
  348.                 <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo">
  349.                   Eliminar
  350.                 </a>
  351.               </div>
  352.               <div id="collapseTwo" class="accordion-body collapse">
  353.                 <div class="accordion-inner">
  354.                   <form id="formulario_eliminar">
  355.                       <input type="hidden" class="form-control"  name="id"/>
  356.                         <table>
  357.                             <tr>
  358.                                 <td>Título</td>
  359.                                 <td><input type="text" class="form-control"  name="titulo" autocomplete="off"/></td>
  360.                             </tr>
  361.                             <tr>
  362.                                 <td>Coordenada X</td>
  363.                                 <td><input type="text" class="form-control" readonly  name="cx" autocomplete="off"/></td>
  364.                             </tr>
  365.                             <tr>
  366.                                 <td>Coordenada Y</td>
  367.                                 <td><input type="text" class="form-control"  readonly name="cy" autocomplete="off"/></td>
  368.                             </tr>
  369.                             <!-- Aqui estar� se colocaran los mensajes para el usuario -->
  370.                             <tr>
  371.                                 <td></td>
  372.                                 <td><span id="loader_grabar" class=""></span></td>
  373.                             </tr>
  374.                             <tr>
  375.                                 <td><button type="button" id="btn_actualizar" class="btn btn-success btn-sm">Actualizar</button></td>
  376.                                 <td><button type="button" id="btn_borrar" class="btn btn-danger btn-sm">Borrar</button></td>
  377.                             </tr>
  378.                             <tr>
  379.                                 <td></td>
  380.                                 <td><label>
  381.                                     <input id="opc_edicion" type="checkbox"> Habilitar Edición
  382.                                   </label>
  383.                                 </td>
  384.                             </tr>
  385.                         </table>
  386.                     </form>
  387.                 </div>
  388.               </div>
  389.             </div>
  390.             <div class="accordion-group">
  391.               <div class="accordion-heading">
  392.                 <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseThree">
  393.                   Buscar
  394.                 </a>
  395.               </div>
  396.               <div id="collapseThree" class="accordion-body collapse">
  397.                 <div class="accordion-inner">
  398.                   ...
  399.                 </div>
  400.               </div>
  401.             </div>
  402.           </div>
  403.  
  404.     </div>
  405. </body>
  406. </html>
Advertisement
Add Comment
Please, Sign In to add comment