2012-05-12 20 views
8

estoy tratando de localizar a un usuario y establecer el mapa para esta posición con folleto:¿Cómo localizar al usuario con el prospecto localizar?

<script> 
    var map; 

    function initMap(){ 
     map = new L.Map('map',{zoomControl : false}); 
     var osmUrl = 'http://{s}.tile.openstreetmap.org/mapnik_tiles/{z}/{x}/{y}.png', 
      osmAttribution = 'Map data &copy; 2012 OpenStreetMap contributors', 
      osm = new L.TileLayer(osmUrl, {maxZoom: 18, attribution: osmAttribution}); 
     map.setView(new L.LatLng(51.930156,7.189230), 7).addLayer(osm); 
    } 

    function locateUser(){ 
     map.locate({setView : true}); 
    } 
</script> 

En ejecutar el navegador pide permiso, pero luego no pasa nada? ¿Qué pasa con mi código?

+0

No sabemos qué folleto es, ni nada de lo que está haciendo. Esa línea de código suena bien, pero realmente necesitas darnos un poco más. Tal vez un enlace a su código, así como información sobre lo que ha intentado hasta ahora. Además, vaya y acepte algunas respuestas: tiene preguntas de hace 9 meses en las que no ha aceptado la respuesta. –

+0

He editado toda la fuente en mi primera publicación. Leaflet es un mapa lib. Detalles aquí: http://leaflet.cloudmade.com/ – fillibuster

+0

¿Podría pegar todo el código? ¿Ha incluido todos los archivos de folleto requeridos? ¿Cómo se detecta la posición del usuario? ¿Se están ejecutando sus funciones? –

Respuesta

8

Tiene un problema con el alcance de su variable de mapa. He publicado un ejemplo que corrige su código aquí: http://jsfiddle.net/XwbsU/3/

Debe recibir la ventana emergente de geolocalización del navegador cuando hace clic en '¡Encuéntreme!'.

Espero que eso te ayude.

9

Aquí hay un truco rápido. Recomiendo este complemento https://github.com/domoritz/leaflet-locatecontrol

var loadMap = function (id) { 
    var HELSINKI = [60.1708, 24.9375]; 
    var map = L.map(id); 
    var tile_url = 'http://{s}.tile.osm.org/{z}/{x}/{y}.png'; 
    var layer = L.tileLayer(tile_url, { 
     attribution: 'OSM' 
    }); 
    map.addLayer(layer); 
    map.setView(HELSINKI, 19); 

    map.locate({setView: true, watch: true}) /* This will return map so you can do chaining */ 
     .on('locationfound', function(e){ 
      var marker = L.marker([e.latitude, e.longitude]).bindPopup('Your are here :)'); 
      var circle = L.circle([e.latitude, e.longitude], e.accuracy/2, { 
       weight: 1, 
       color: 'blue', 
       fillColor: '#cacaca', 
       fillOpacity: 0.2 
      }); 
      map.addLayer(marker); 
      map.addLayer(circle); 
     }) 
     .on('locationerror', function(e){ 
      console.log(e); 
      alert("Location access denied."); 
     }); 
}; 

loadMap('map'); 
+0

¿sabes cómo puedo agregar algunas opciones aquí, en particular: locateOptions: {maxZoom: 15} – user127181

+0

Aquí está el documento http://leafletjs.com/reference.html#map-locate-options que simplemente lo agregarías como map.locate ({maxZoom: 15, ...}) –

Cuestiones relacionadas