Foros del Web » Programando para Internet » Javascript »

Api google maps

Estas en el tema de Api google maps en el foro de Javascript en Foros del Web. Hola como estan, Veran necesito usar el api de google maps para pasar una direccion y provincia y que me muestre el lugar me devuelva ...
  #1 (permalink)  
Antiguo 11/04/2013, 02:53
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 2 meses
Puntos: 4
Api google maps

Hola como estan,

Veran necesito usar el api de google maps para pasar una direccion y provincia y que me muestre el lugar me devuelva las coordenadas y si el lugar que muestra no es correcto se pueda arrastrar el icono para ponerlo donde sea correcto.

Una ultima cosa es guardar las cordenadas en una base de datos

Estado mirando en la api pero no encuentro codigos de ejemplo que me puedan ayudar para hacer esto.

A ver si alguien maneja un poquito esta api y me puede orientar un poquito, o conoce algun ejemplo.

Un saludo amigos

Última edición por franjgg; 11/04/2013 a las 03:00
  #2 (permalink)  
Antiguo 11/04/2013, 03:18
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años, 1 mes
Puntos: 155
Respuesta: Api google maps

...lo que necesitas es usar el objeto Geocode...en un input ingresas la direccion, la envias como parametro al objeto Geocode, y de ahi objtienes el lat y el lng. Luego creas una marca, la ubicas y le das la opcion true en dragabble...aca tienes una ejemplo clarito de lo que tienes que hacer http://gmaps-samples.googlecode.com/...legeocode.html

...luego para almacenarla en la base de datos, creas un evento al terminar el drag de la marca, o al situaar la marca con el resultado del geocode, luego envias la lat y la lng a la base de datos por medio de XMLHttpRequest..o sea AJAX, y listo..
  #3 (permalink)  
Antiguo 11/04/2013, 03:25
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 2 meses
Puntos: 4
Respuesta: Api google maps

Hola amigo ipratoriux gracias por tu atencion,

Como podria acceder al codigo del ejemplo que me has enviado?

Simplemente con la opcion de ver codigo desde el navegador?

O google lo ofrece en algun lugar?

He encontrado este ejemplo que es lo que necesito pero en lugar de pulsar el boton y que muestre la imagen, que la muestre directamente y se pueda desplazar y cambie las cordenadas.

http://gmaps-samples-v3.googlecode.c...getlatlng.html

Un saludo amigo

Última edición por franjgg; 11/04/2013 a las 03:49
  #4 (permalink)  
Antiguo 11/04/2013, 03:53
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años, 1 mes
Puntos: 155
Respuesta: Api google maps

aca tienes todo el codigo

Código HTML:
Ver original
  1. <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
  2. <style type="text/css">
  3.   div#map {
  4.     position: relative;
  5.   }
  6.  
  7.   div#crosshair {
  8.     position: absolute;
  9.     top: 192px;
  10.     height: 19px;
  11.     width: 19px;
  12.     left: 50%;
  13.     margin-left: -8px;
  14.     display: block;
  15.     background: url(crosshair.gif);
  16.     background-position: center center;
  17.     background-repeat: no-repeat;
  18. }
  19. <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
  20. <script type="text/javascript">
  21.   var map;
  22.   var geocoder;
  23.   var centerChangedLast;
  24.   var reverseGeocodedLast;
  25.   var currentReverseGeocodeResponse;
  26.  
  27.   function initialize() {
  28.     var latlng = new google.maps.LatLng(32.5468,-23.2031);
  29.     var myOptions = {
  30.       zoom: 2,
  31.       center: latlng,
  32.       mapTypeId: google.maps.MapTypeId.ROADMAP
  33.     };
  34.     map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
  35.     geocoder = new google.maps.Geocoder();
  36.  
  37.  
  38.     setupEvents();
  39.     centerChanged();
  40.   }
  41.  
  42.   function setupEvents() {
  43.     reverseGeocodedLast = new Date();
  44.     centerChangedLast = new Date();
  45.  
  46.     setInterval(function() {
  47.       if((new Date()).getSeconds() - centerChangedLast.getSeconds() > 1) {
  48.         if(reverseGeocodedLast.getTime() < centerChangedLast.getTime())
  49.          reverseGeocode();
  50.      }
  51.    }, 1000);
  52.  
  53.    google.maps.event.addListener(map, 'zoom_changed', function() {
  54.      document.getElementById("zoom_level").innerHTML = map.getZoom();
  55.    });
  56.  
  57.    google.maps.event.addListener(map, 'center_changed', centerChanged);
  58.  
  59.    google.maps.event.addDomListener(document.getElementById('crosshair'),'dblclick', function() {
  60.       map.setZoom(map.getZoom() + 1);
  61.    });
  62.  
  63.  }
  64.  
  65.  function getCenterLatLngText() {
  66.    return '(' + map.getCenter().lat() +', '+ map.getCenter().lng() +')';
  67.  }
  68.  
  69.  function centerChanged() {
  70.    centerChangedLast = new Date();
  71.    var latlng = getCenterLatLngText();
  72.    document.getElementById('latlng').innerHTML = latlng;
  73.    document.getElementById('formatedAddress').innerHTML = '';
  74.    currentReverseGeocodeResponse = null;
  75.  }
  76.  
  77.  function reverseGeocode() {
  78.    reverseGeocodedLast = new Date();
  79.    geocoder.geocode({latLng:map.getCenter()},reverseGeocodeResult);
  80.  }
  81.  
  82.  function reverseGeocodeResult(results, status) {
  83.    currentReverseGeocodeResponse = results;
  84.    if(status == 'OK') {
  85.      if(results.length == 0) {
  86.        document.getElementById('formatedAddress').innerHTML = 'None';
  87.      } else {
  88.        document.getElementById('formatedAddress').innerHTML = results[0].formatted_address;
  89.      }
  90.    } else {
  91.      document.getElementById('formatedAddress').innerHTML = 'Error';
  92.    }
  93.  }
  94.  
  95.  
  96.  function geocode() {
  97.    var address = document.getElementById("address").value;
  98.    geocoder.geocode({
  99.      'address': address,
  100.      'partialmatch': true}, geocodeResult);
  101.  }
  102.  
  103.  function geocodeResult(results, status) {
  104.    if (status == 'OK' && results.length > 0) {
  105.       map.fitBounds(results[0].geometry.viewport);
  106.     } else {
  107.       alert("Geocode was not successful for the following reason: " + status);
  108.     }
  109.   }
  110.  
  111.   function addMarkerAtCenter() {
  112.     var marker = new google.maps.Marker({
  113.         position: map.getCenter(),
  114.         map: map
  115.     });
  116.  
  117.     var text = 'Lat/Lng: ' + getCenterLatLngText();
  118.     if(currentReverseGeocodeResponse) {
  119.       var addr = '';
  120.       if(currentReverseGeocodeResponse.size == 0) {
  121.         addr = 'None';
  122.       } else {
  123.         addr = currentReverseGeocodeResponse[0].formatted_address;
  124.       }
  125.       text = text + '<br>' + 'address: <br>' + addr;
  126.     }
  127.  
  128.     var infowindow = new google.maps.InfoWindow({ content: text });
  129.  
  130.     google.maps.event.addListener(marker, 'click', function() {
  131.       infowindow.open(map,marker);
  132.     });
  133.   }
  134.  
  135. </head>
  136. <body onload="initialize()">
  137.   Find Place: <input type="text" id="address"/><input type="button" value="Go" onclick="geocode()"><input type="button" value="Add Marker at Center" onclick="addMarkerAtCenter()"/>
  138.   <div id="map">
  139.     <div id="map_canvas" style="width:100%; height:400px"></div>
  140.     <div id="crosshair"></div>
  141.   </div>
  142.  
  143.   <table>
  144.     <tr><td>Lat/Lng:</td><td><div id="latlng"></div></td></tr>
  145.     <tr><td>Address:</td><td><div id="formatedAddress"></div></td></tr>
  146.     <tr><td>Zoom Level</td><td><div id="zoom_level">2</div></td></tr>
  147.   </table>
  148. </body>
  149. </html>
  #5 (permalink)  
Antiguo 11/04/2013, 04:02
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 2 meses
Puntos: 4
Respuesta: Api google maps

Muchas gracias por tu atencion amigo,

Eso es casi lo que necesitaba por completo es genial,

La unica cosa que necesito es cambiar que en lugar de pulsar el boton y salga la imagen con la flechita, se muestre directamente y se pueda arrastras para cambiar la direccion,

He encontrado esta funcion que creo que es la que hace que sea arrastrable, la he añadido al codigo que me has enviado pero parece que no anda.

Código Javascript:
Ver original
  1. function initialize() {
  2.   if (GBrowserIsCompatible()) {
  3.     var map = new GMap2(document.getElementById("map_canvas"));
  4.     var center = new GLatLng(37.4419, -122.1419);
  5.     map.setCenter(center, 13);
  6.  
  7.     var marker = new GMarker(center, {draggable: true});
  8.  
  9.     GEvent.addListener(marker, "dragstart", function() {
  10.       map.closeInfoWindow();
  11.     });
  12.  
  13.     GEvent.addListener(marker, "dragend", function() {
  14.       marker.openInfoWindowHtml("Just bouncing along...");
  15.     });
  16.  
  17.     map.addOverlay(marker);
  18.  
  19.   }
  20. }


Un saludo y nuevo muchas gracias por tu atencion amigo
  #6 (permalink)  
Antiguo 11/04/2013, 04:16
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años, 1 mes
Puntos: 155
Respuesta: Api google maps

...es que no te va a funcionar porque este código que me has puesto acá es de Google Maps API versión 2, y yo te puse la versión 3, tanto en el link como en el código que te pase...si te fijas el link que te mande...buscar por dirección, si encuentra la ubicación te muestra la marca, si le das click te muestra el lat y lng, y los podes arrastrar la marca...no es eso lo que necesitas?
  #7 (permalink)  
Antiguo 11/04/2013, 04:30
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 2 meses
Puntos: 4
Respuesta: Api google maps

UMM, si amigo lo que no se es como puedo pasar esa latitud y longitud a un campo de texto para poder guardarlos en una base de datos posteriormente al pulsar un submit

Un saludo amigo
  #8 (permalink)  
Antiguo 11/04/2013, 06:04
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 2 meses
Puntos: 4
Respuesta: Api google maps

Hola de nuevo amigo,

He conseguido cojer las coordenadas apartir del codigo que me has enviado, la unica cosa que me falta es que cuando movemos la marca las coordenadas no se actualizan,

A ver si puede echarme una manilla.

este es el codigo completo:

Código HTML:
Ver original
  1. <script src="http://maps.google.com/maps?file=api&v=2.x&key=AIzaSyB6aZ5WHW3WiTHExADSYls_fal7ez3o504" type="text/javascript"></script>
  2.      <script src="http://maps.google.com/maps?file=api&v=2.x&key=AIzaSyB6aZ5WHW3WiTHExADSYls_fal7ez3o504" type="text/javascript"></script>
  3.      <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAjU0EJWnWPMv7oQ-jjS7dYxSPW5CJgpdgO_s4yyMovOaVh_KvvhSfpvagV18eOyDWu7VytS6Bi1CWxw"
  4.      type="text/javascript"></script>
  5.     <script type="text/javascript">
  6.  
  7.     var map = null;
  8.     var geocoder = null;
  9.  
  10.     function initialize() {
  11.       if (GBrowserIsCompatible()) {
  12.         map = new GMap2(document.getElementById("map_canvas"));
  13.         map.setCenter(new GLatLng(37.4419, -122.1419), 1);
  14.         map.setUIToDefault();
  15.         geocoder = new GClientGeocoder();
  16.       }
  17.     }
  18.  
  19.  
  20.  
  21.     function showAddress(address) {
  22.       if (geocoder) {
  23.         geocoder.getLatLng(
  24.           address,
  25.           function(point) {
  26.             if (!point) {
  27.               alert(address + " not found");
  28.             } else {
  29.  
  30.               map.setCenter(point, 15);
  31.               var marker = new GMarker(point, {draggable: true});
  32.               map.addOverlay(marker);
  33.               GEvent.addListener(marker, "dragend", function() {
  34.                            
  35.                if(document.getElementById('address').value != "") {
  36.                   var address = document.getElementById('address').value;
  37.                   geocoder.getLatLng(address, function(point) {
  38.                     if (!point) {
  39.                       alert(address + ' no encontrado');
  40.                     } else {
  41.                       document.getElementById('latitud').value = point.y;
  42.                       document.getElementById('longitud').value = point.x;
  43.                     }    
  44.                     });}
  45.  
  46.               });
  47.               GEvent.addListener(marker, "click", function() {
  48.                            
  49.                if(document.getElementById('address').value != "") {
  50.                   var address = document.getElementById('address').value;
  51.                   geocoder.getLatLng(address, function(point) {
  52.                     if (!point) {
  53.                       alert(address + ' no encontrado');
  54.                     } else {
  55.                       document.getElementById('latitud').value = point.y;
  56.                       document.getElementById('longitud').value = point.x;
  57.                     }    
  58.                     });}
  59.               });
  60.           GEvent.trigger(marker, "click");
  61.             }
  62.           }
  63.         );
  64.       }
  65.     }
  66.        
  67.    
  68.        
  69.    
  70.     </script>
  71.   </head>
  72.  
  73.   <body onload="initialize()" onunload="GUnload()">
  74.     <form action="#" onsubmit="showAddress(this.address.value); return false">
  75.       <p>
  76.         Enter an address, and then drag the marker to tweak the location.
  77.         <br/>
  78.         The latitude/longitude will appear in the infowindow after each geocode/drag.
  79.       </p>
  80.       <p>
  81.         <input type="text" style="width:350px" name="address" id="address" value="1600 Amphitheatre Pky, Mountain View, CA" />
  82.         <input type="submit" value="Go!"/>    <tr><td>Lat/Lng:</td><td><div id="latlng"></div></td></tr>
  83.       </p>
  84.       <div id="map_canvas" style="width: 600px; height: 400px"></div>
  85.     <input name="latitud" type="text" id="latitud" size="45" />
  86.     <input name="longitud" type="text" id="longitud" size="45" />                  
  87.     </form>

Con esto ya podria enviar las coordenadas mediante un form y guardarlas en la base de datos.

Bueno un saludo amigo

Etiquetas: api, google, maps
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:01.