Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <head>
- <style>
- #mapa{
- width: 400px;
- height: 400px;
- float:left;
- background: green;
- }
- #infor{
- width: 400px;
- height: 400px;
- float:left;
- }
- </style>
- <!--IMPORTANTE RESPETAR EL ORDEN -->
- <!--ESTILOS DE BOOSTRAP -->
- <link href="css/bootstrap.min.css" rel="stylesheet" />
- <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
- <script type="text/javascript" src="http://code.jquery.com/jquery-2.0.3.min.js" ></script>
- <!--ARCHIVOS JAVASCRIPT DE BOOTSTRAP -->
- <script type="text/javascript" src="js/bootstrap.min.js" ></script>
- <script>
- //VARIABLES GENERALES
- //declaras fuera del ready de jquery
- var nuevos_marcadores = [];
- var marcadores_bd= [];
- var mapa = null; //VARIABLE GENERAL PARA EL MAPA
- //FUNCION PARA QUITAR MARCADORES DE MAPA
- function limpiar_marcadores(lista)
- {
- for(i in lista)
- {
- //QUITAR MARCADOR DEL MAPA
- lista[i].setMap(null);
- }
- }
- $(document).on("ready", function(){
- //VARIABLE DE FORMULARIO
- var formulario = $("#formulario");
- var punto = new google.maps.LatLng(-13.163622,-72.545926);
- var config = {
- zoom:4,
- center:punto,
- mapTypeId: google.maps.MapTypeId.ROADMAP
- };
- mapa = new google.maps.Map( $("#mapa")[0], config );
- google.maps.event.addListener(mapa, "click", function(event){
- var coordenadas = event.latLng.toString();
- coordenadas = coordenadas.replace("(", "");
- coordenadas = coordenadas.replace(")", "");
- var lista = coordenadas.split(",");
- var direccion = new google.maps.LatLng(lista[0], lista[1]);
- //PASAR LA INFORMACI�N AL FORMULARIO
- formulario.find("input[name='titulo']").focus();
- formulario.find("input[name='cx']").val(lista[0]);
- formulario.find("input[name='cy']").val(lista[1]);
- var marcador = new google.maps.Marker({
- //titulo:prompt("Titulo del marcador?"),
- position:direccion,
- map: mapa,
- animation:google.maps.Animation.DROP,
- draggable:false
- });
- //VIDEO 15
- $("#collapseOne").collapse('show');
- $("#collapseTwo").collapse('hide');
- //ALMACENAR UN MARCADOR EN EL ARRAY nuevos_marcadores
- nuevos_marcadores.push(marcador);
- google.maps.event.addListener(marcador, "click", function(){
- });
- //BORRAR MARCADORES NUEVOS
- limpiar_marcadores(nuevos_marcadores);
- marcador.setMap(mapa);
- });
- $("#btn_grabar").on("click", function(){
- //INSTANCIAR EL FORMULARIO
- var f = $("#formulario");
- //VALIDAR CAMPO TITULO
- if(f.find("input[name='titulo']").val().trim()=="")
- {
- alert("Falta título");
- return false;
- }
- //VALIDAR CAMPO CX
- if(f.find("input[name='cx']").val().trim()=="")
- {
- alert("Falta Coordenada X");
- return false;
- }
- //VALIDAR CAMPO CY
- if(f.find("input[name='cy']").val().trim()=="")
- {
- alert("Falta Coordenada Y");
- return false;
- }
- //FIN VALIDACIONES
- if(f.hasClass("busy"))
- {
- //Cuando se haga clic en el boton grabar
- //se le marcar� con una clase 'busy' indicando
- //que ya se ha presionado, y no permitir que se
- //realiCe la misma operaci�n hasta que esta termine
- //SI TIENE LA CLASE BUSY, YA NO HARA NADA
- return false;
- }
- //SI NO TIENE LA CLASE BUSY, SE LA PONDREMOS AHORA
- f.addClass("busy");
- //Y CUANDO QUITAR LA CLASE BUSY?
- //CUANDO SE TERMINE DE PROCESAR ESTA SOLICITUD
- //ES DECIR EN EL EVENTO COMPLETE
- var loader_grabar = $("#loader_grabar");
- $.ajax({
- type:"POST",
- url:"iajax.php",
- dataType:"JSON",
- data:f.serialize()+"&tipo=grabar",
- success:function(data){
- //alert(data.mensaje);
- listar();
- },
- beforeSend:function(){
- //Notificar al usuario mientras que se procesa su solicitud
- loader_grabar.removeClass("label-success").addClass("label label-warning")
- .text("Procesando...").slideDown();
- },
- complete:function(){
- //QUITAR LA CLASE BUSY
- f.removeClass("busy");
- f[0].reset();
- //[0] jquery trabaja con array de elementos javascript no
- //asi que se debe especificar cual elemento se har� reset
- //capricho de javascript
- //AHORA PERMITIR� OTRA VEZ QUE SE REALICE LA ACCION
- //Notificar que se ha terminado de procesar
- loader_grabar.removeClass("label-warning").addClass("label-success")
- .text("Grabado OK").delay(4000).slideUp();
- }
- });
- return false;
- });
- //BORRAR
- $("#btn_borrar").on("click", function(){
- var f_eliminar = $("#formulario_eliminar");
- $.ajax({
- type:"POST",
- url:"iajax.php",
- data:"id="+f_eliminar.find("input[name='id']").val()+"&tipo=borrar",
- dataType:"JSON",
- success:function(data){
- if(data.estado=="ok")
- {
- limpiar_marcadores(nuevos_marcadores);
- alert(data.mensaje);
- f_eliminar[0].reset();
- listar();
- }
- else
- {
- alert(data.mensaje);
- }
- },
- beforeSend:function(){
- },
- complete:function(){
- }
- });
- });
- //ACTUALIZAR
- $("#btn_actualizar").on("click", function(){
- var f_eliminar = $("#formulario_eliminar");
- $.ajax({
- type:"POST",
- url:"iajax.php",
- data:f_eliminar.serialize()+"&tipo=actualizar",
- dataType:"JSON",
- success:function(data){
- if(data.estado=="ok")
- {
- limpiar_marcadores(nuevos_marcadores);
- alert(data.mensaje);
- f_eliminar[0].reset();
- listar();
- }
- else
- {
- alert(data.mensaje);
- }
- },
- beforeSend:function(){
- },
- complete:function(){
- }
- });
- });
- //CARGAR PUNTOS AL TERMINAR DE CARGAR LA P�GINA
- listar();//FUNCIONA, AHORA A GRAFICAR LOS PUNTOS EN EL MAPA
- });
- //FUERA DE READY DE JQUERY
- //FUNCTION PARA RECUPERAR PUNTOS DE LA BD
- function listar()
- {
- //ANTES DE LISTAR MARCADORES
- //SE DEBEN QUITAR LOS ANTERIORES DEL MAPA
- limpiar_marcadores(marcadores_bd);
- var f_eliminar = $("#formulario_eliminar");
- $.ajax({
- type:"POST",
- url:"iajax.php",
- dataType:"JSON",
- data:"&tipo=listar",
- success:function(data){
- if(data.estado=="ok")
- {
- //alert("Hay puntos en la BD");
- $.each(data.mensaje, function(i, item){
- //OBTENER LAS COORDENADAS DEL PUNTO
- var posi = new google.maps.LatLng(item.cx, item.cy);//bien
- //CARGAR LAS PROPIEDADES AL MARCADOR
- var marca = new google.maps.Marker({
- idMarcador:item.IdPunto,
- position:posi,
- titulo: item.Titulo,
- cx:item.cx,
- cy:item.cy
- });
- //AGREGAR EVENTO CLICK AL MARCADOR
- google.maps.event.addListener(marca, "click", function(){
- $("#collapseOne").collapse('hide');
- $("#collapseTwo").collapse('show');
- //alert("Hiciste click en "+marca.idMarcador + " - " + marca.titulo) ;
- //SOLO MOVER CUANDO SE MARQUE EL CHECKBOX DEL FORMULARIO
- if($("#opc_edicion").prop("checked"))
- {
- //HACER UN MARCADOR DRAGGABLE
- marca.setOptions({draggable: true});
- google.maps.event.addListener(marca, 'dragend', function(event) {
- //AL FINAL DE MOVE EL MARCADOR
- //ESTE MISMO YA SE ACTUALIZA CON LAS NUEVAS COORDENADAS
- //alert(marca.position);
- var coordenadas = event.latLng.toString();
- coordenadas = coordenadas.replace("(", "");
- coordenadas = coordenadas.replace(")", "");
- var lista = coordenadas.split(",");
- f_eliminar.find("input[name='cx']").val(lista[0]);
- f_eliminar.find("input[name='cy']").val(lista[1]);
- } );
- }
- else
- {
- f_eliminar.find("input[name='titulo']").val(marca.titulo);
- f_eliminar.find("input[name='cx']").val(marca.cx);
- f_eliminar.find("input[name='cy']").val(marca.cy);
- f_eliminar.find("input[name='id']").val(marca.idMarcador);
- }
- limpiar_marcadores(nuevos_marcadores);
- });
- //AGREGAR EL MARCADOR A LA VARIABLE MARCADORES_BD
- marcadores_bd.push(marca);
- //UBICAR EL MARCADOR EN EL MAPA
- marca.setMap(mapa);
- });
- }
- else
- {
- alert("NO hay puntos en la BD");
- }
- },
- beforeSend:function(){
- },
- complete:function(){
- }
- });
- }
- //PLANTILLA AJAX
- </script>
- </head>
- <body>
- <div id="mapa">
- <h2>Aquí ira el mapa!</h2>
- </div>
- <div id="infor">
- <div class="accordion" id="accordion2">
- <div class="accordion-group">
- <div class="accordion-heading">
- <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">
- Agregar
- </a>
- </div>
- <div id="collapseOne" class="accordion-body collapse in">
- <div class="accordion-inner">
- <form id="formulario">
- <table>
- <tr>
- <td>Título</td>
- <td><input type="text" class="form-control" name="titulo" autocomplete="off"/></td>
- </tr>
- <tr>
- <td>Coordenada X</td>
- <td><input type="text" class="form-control" readonly name="cx" autocomplete="off"/></td>
- </tr>
- <tr>
- <td>Coordenada Y</td>
- <td><input type="text" class="form-control" readonly name="cy" autocomplete="off"/></td>
- </tr>
- <!-- Aqui estar� se colocaran los mensajes para el usuario -->
- <tr>
- <td></td>
- <td><span id="loader_grabar" class=""></span></td>
- </tr>
- <tr>
- <td><button type="button" id="btn_grabar" class="btn btn-success btn-sm">Grabar</button></td>
- <td><button type="button" class="btn btn-danger btn-sm">Cancelar</button></td>
- </tr>
- </table>
- </form>
- </div>
- </div>
- </div>
- <div class="accordion-group">
- <div class="accordion-heading">
- <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo">
- Eliminar
- </a>
- </div>
- <div id="collapseTwo" class="accordion-body collapse">
- <div class="accordion-inner">
- <form id="formulario_eliminar">
- <input type="hidden" class="form-control" name="id"/>
- <table>
- <tr>
- <td>Título</td>
- <td><input type="text" class="form-control" name="titulo" autocomplete="off"/></td>
- </tr>
- <tr>
- <td>Coordenada X</td>
- <td><input type="text" class="form-control" readonly name="cx" autocomplete="off"/></td>
- </tr>
- <tr>
- <td>Coordenada Y</td>
- <td><input type="text" class="form-control" readonly name="cy" autocomplete="off"/></td>
- </tr>
- <!-- Aqui estar� se colocaran los mensajes para el usuario -->
- <tr>
- <td></td>
- <td><span id="loader_grabar" class=""></span></td>
- </tr>
- <tr>
- <td><button type="button" id="btn_actualizar" class="btn btn-success btn-sm">Actualizar</button></td>
- <td><button type="button" id="btn_borrar" class="btn btn-danger btn-sm">Borrar</button></td>
- </tr>
- <tr>
- <td></td>
- <td><label>
- <input id="opc_edicion" type="checkbox"> Habilitar Edición
- </label>
- </td>
- </tr>
- </table>
- </form>
- </div>
- </div>
- </div>
- <div class="accordion-group">
- <div class="accordion-heading">
- <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseThree">
- Buscar
- </a>
- </div>
- <div id="collapseThree" class="accordion-body collapse">
- <div class="accordion-inner">
- ...
- </div>
- </div>
- </div>
- </div>
- </div>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment