2012-05-12 37 views
8

Tôi đang cố gắng xác định vị trí một người sử dụng và thiết lập bản đồ đến vị trí này với tờ rơi:Làm thế nào để xác định vị trí người dùng với tờ rơi xác định vị trí?

<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> 

On thực hiện trình duyệt xin phép, nhưng sau đó không có gì xảy ra? Có gì sai với mã của tôi?

+0

Chúng tôi không biết tờ rơi là gì hoặc bất kỳ điều gì bạn đang làm. Đó là một dòng mã âm thanh tốt, nhưng bạn thực sự cần phải cung cấp cho chúng tôi nhiều hơn một chút. Có lẽ một liên kết đến mã của bạn, cũng như thông tin về những gì bạn đã thử cho đến nay. Ngoài ra, đi và chấp nhận một số câu trả lời - bạn có câu hỏi từ 9 tháng trước, nơi bạn chưa chấp nhận câu trả lời! –

+0

Tôi đã chỉnh sửa toàn bộ nguồn trong bài đăng đầu tiên của mình. Leaflet là một bản đồ lib. Chi tiết tại đây: http://leaflet.cloudmade.com/ – fillibuster

+0

Bạn có thể dán toàn bộ mã của mình không? Bạn đã bao gồm tất cả các tệp tờ rơi yêu cầu chưa? Làm thế nào để bạn phát hiện vị trí của người dùng? Các chức năng của bạn có được thực thi không? –

Trả lời

8

Bạn có vấn đề với phạm vi biến bản đồ của mình. Tôi đã đăng ví dụ sửa mã của bạn tại đây: http://jsfiddle.net/XwbsU/3/

Bạn sẽ nhận được cửa sổ bật lên vị trí địa lý của trình duyệt khi bạn nhấp vào 'Tìm tôi!'.

Hy vọng điều đó sẽ giúp ích cho bạn.

9

Đây là một bản hack nhanh. Tôi khuyên bạn nên sử dụng plugin này 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

bạn có biết cách tôi có thể thêm một vài tùy chọn ở đây, cụ thể là: locateOptions: {maxZoom: 15} – user127181

+0

Đây là tài liệu http://leafletjs.com/reference.html#map-locate-options bạn sẽ chỉ thêm tùy chọn này map.locate ({maxZoom: 15, ...}) –

Các vấn đề liên quan