Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] google map v3 busqueda por texto

Estas en el tema de google map v3 busqueda por texto en el foro de Javascript en Foros del Web. Hola, estoy intentando con la api v3 de google map mostrar por ejemplo todas las tiendas de muebles de españa, creo que tengo el codigo ...
  #1 (permalink)  
Antiguo 29/01/2013, 17:28
 
Fecha de Ingreso: abril-2010
Ubicación: Extremadura
Mensajes: 128
Antigüedad: 14 años
Puntos: 2
google map v3 busqueda por texto

Hola, estoy intentando con la api v3 de google map mostrar por ejemplo todas las tiendas de muebles de españa, creo que tengo el codigo pero me tira el siguiente error:

Código:
TypeError: google.maps.places is undefined

var service = new google.maps.places.PlacesService(map);
este mi codigo, habe si ven algo estraño, muchas gracias de antemano:




Código Javascript:
Ver original
  1. <html>
  2.   <head>
  3.     <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
  4.     <style type="text/css">
  5.       html { height: 100% }
  6.       body { height: 100%; margin: 0; padding: 0 }
  7.       #map_canvas { height: 100% }
  8.     </style>
  9.     <script type="text/javascript"
  10.       src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB------xLQJ----cs&sensor=false">
  11.     </script>
  12.     <script type="text/javascript">
  13.    var map;
  14. var service;
  15. var infowindow;
  16.  
  17.  
  18. function initialize() {
  19.   var pyrmont = new google.maps.LatLng(39.300299,-3.825073);
  20.  
  21.   map = new google.maps.Map(document.getElementById('map'), {
  22.       mapTypeId: google.maps.MapTypeId.ROADMAP,
  23.       center: pyrmont,
  24.       zoom: 6
  25.     });
  26.  
  27.   var request = {
  28.     location: pyrmont,
  29.     query: 'tienda muebles'
  30.   };
  31.  
  32.   var service = new google.maps.places.PlacesService(map);
  33.   service.textSearch(request, callback);
  34. }
  35.  
  36. function callback(results, status) {
  37.   if (status == google.maps.places.PlacesServiceStatus.OK) {
  38.     for (var i = 0; i < results.length; i++) {
  39.       var place = results[i];
  40.       createMarker(results[i]);
  41.     }
  42.   }
  43. }
  44.     </script>
  45.   </head>
  46.   <body onload="initialize()">
  47.     <div id="map" style="width:650px; height:650px"></div>
  48.   </body>
  49. </html>
  #2 (permalink)  
Antiguo 29/01/2013, 17:40
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años
Puntos: 155
Respuesta: google map v3 busqueda por texto

...pues te sale esto por que no has cargado la librería, debes hacerlo con "libraries=places" , ahi ya te corre sin problema

Código HTML:
Ver original
  1. <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=places&sensor=true_or_false"></script>
  #3 (permalink)  
Antiguo 29/01/2013, 18:34
 
Fecha de Ingreso: abril-2010
Ubicación: Extremadura
Mensajes: 128
Antigüedad: 14 años
Puntos: 2
Respuesta: google map v3 busqueda por texto

hola, gracias por responder, mira ahora me lanza el siguiente error:

Código:
ReferenceError: createMarker is not defined	

createMarker(results[i]);
y sigue sin aparecer ningun punto marcado en el mapa
  #4 (permalink)  
Antiguo 29/01/2013, 20:28
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años
Puntos: 155
Respuesta: google map v3 busqueda por texto

Claro mi amigo, acá tienes el código incompleto...

1ero. El metodo TextSearch del objeto PlacesService esta incompleto, debes incluir un radius, es decir en que radio buscará, sino Google Maps interpreta este valor como undefined, y al ser un NaN como resultado del radio no efectua la busqueda.

2do. No te ha creado las marcas porque no tienes creada la funciona createMarker();

3er. Tampoco tienes creado el objeto InfoWindow();

Aca te lo paso corregido, he puesto un radio de 500, lo he probado funciona perfecto, si tienes otra duda me dices

Código Javascript:
Ver original
  1. var map;
  2.     var service;
  3.     var infowindow;
  4.  
  5.  
  6.     function initialize() {
  7.         var pyrmont = new google.maps.LatLng(39.300299,-3.825073);
  8.  
  9.         map = new google.maps.Map(document.getElementById('map'), {
  10.             mapTypeId: google.maps.MapTypeId.ROADMAP,
  11.             center: pyrmont,
  12.             zoom: 6
  13.         });
  14.  
  15.         var request = {
  16.             location: pyrmont,
  17.             radius: '500',
  18.             query: 'tienda muebles'
  19.         };
  20.  
  21.         infowindow = new google.maps.InfoWindow();
  22.         var service = new google.maps.places.PlacesService(map);
  23.         service.textSearch(request, function(results, status) {
  24.             if (status == google.maps.places.PlacesServiceStatus.OK) {
  25.                 for (var i = 0; i < results.length; i++) {                 
  26.                     createMarker(results[i]);
  27.                 }
  28.             }
  29.         });
  30.     }
  31.  
  32.     function createMarker(placeMarker) {
  33.         var marker = new google.maps.Marker({
  34.             map: map,
  35.             position: placeMarker.geometry.location
  36.         });
  37.  
  38.         google.maps.event.addListener(marker, 'click', function() {
  39.             infowindow.setContent(placeMarker.name);
  40.             infowindow.open(map, this);
  41.         });
  42.     }
  #5 (permalink)  
Antiguo 30/01/2013, 05:13
 
Fecha de Ingreso: abril-2010
Ubicación: Extremadura
Mensajes: 128
Antigüedad: 14 años
Puntos: 2
Respuesta: google map v3 busqueda por texto

gracias por tu paciencia, ahora me encuentro con un warning jijijiji poco a poco, al parece carga el mapa varias veces y crea coinflicto, estube mirando en san google pero no encontre nada al respecto que me fuera util

Código:
Warning: you have included the Google Maps API multiple times on this page. This may cause unexpected errors.
te dejo mi codigo tal cual lo tengo


Código:
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
      html { height: 100% }
      body { height: 100%; margin: 0; padding: 0 }
      #map_canvas { height: 100% }
    </style>
   <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=places&sensor=true"></script>
    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=AIzaSyBb2----------------------------------------Npcs&sensor=true"></script>
    <script type="text/javascript">
    var map;
        var service;
        var infowindow;
     
     
        function initialize() {
            var pyrmont = new google.maps.LatLng(39.300299,-3.825073);
     
            map = new google.maps.Map(document.getElementById('map'), {
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                center: pyrmont,
                zoom: 6
            });
     
            var request = {
                location: pyrmont,
                radius: '5000',
                query: 'tienda muebles'
            };
     
            infowindow = new google.maps.InfoWindow();
            var service = new google.maps.places.PlacesService(map);
            service.textSearch(request, function(results, status) {
                if (status == google.maps.places.PlacesServiceStatus.OK) {
                    for (var i = 0; i < results.length; i++) {                 
                        createMarker(results[i]);
                    }
                }
            });
        }
     
        function createMarker(placeMarker) {
            var marker = new google.maps.Marker({
                map: map,
                position: placeMarker.geometry.location
            });
     
            google.maps.event.addListener(marker, 'click', function() {
                infowindow.setContent(placeMarker.name);
                infowindow.open(map, this);
            });
        }
    </script>
  </head>
  <body onload="initialize()">
    <div id="map" style="width:650px; height:650px"></div>
  </body>
</html>
  #6 (permalink)  
Antiguo 30/01/2013, 06:18
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años
Puntos: 155
Respuesta: google map v3 busqueda por texto

Es que mi estimado, estas poniendo dos veces el script para cargar al google maps, lo que tienes que hacer es usar la etiqueta con tu key y agregar a la url la libreria a cargar

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=AIzaSyBb2----------------------------------------Npcs&libraries=places&sensor=true"></script>

Etiquetas: busqueda, google, html, js, map
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 15:59.