<!DOCTYPE html>
<html>
<head>
  <title>Leaflet mobile example</title>

  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

  <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.3/leaflet.css" />

  <script src="//cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.3/leaflet.js"></script>
  <script src="//cdnjs.cloudflare.com/ajax/libs/vue/0.11.5/vue.min.js"></script>
  <style>
    body {
      padding: 0;
      margin: 0;
    }
    html, body, #map {
      height: 100%;
    }
  </style>
</head>
<body>
  <div id="map"></div>

  <script>
    var app = new Vue({
      data: {
        features: {}
      },
      created: function() {
        this.loadFeatures();
      },
      watch: {
        features: function() {
          /** app **/
          var map = L.map('map');

          L.tileLayer('https://{s}.tiles.mapbox.com/v3/{id}/{z}/{x}/{y}.png', {
            maxZoom: 18,
            attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, ' +
              '<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' +
              'Imagery c <a href="http://mapbox.com">Mapbox</a>',
            id: 'examples.map-i875mjb7'
          }).addTo(map);

          L.geoJson(this.features).addTo(map);

          function onLocationFound(e) {
            var radius = e.accuracy / 2;

            L.marker(e.latlng).addTo(map)
              .bindPopup("You are within " + radius + " meters from this point").openPopup();

            L.circle(e.latlng, radius).addTo(map);
          }

          function onLocationError(e) {
            alert(e.message);
          }

          map.on('locationfound', onLocationFound);
          map.on('locationerror', onLocationError);

          map.locate({setView: true, maxZoom: 16});
        }
      },
      methods: {
        loadFeatures: function() {
          var xhr = new XMLHttpRequest();
          var self = this;
          xhr.open('GET', 'greenville-sc-bike-parking.geojson');
          xhr.onload = function() {
            self.features = JSON.parse(xhr.responseText);
          };
          xhr.send();
        }
      }
    });
  </script>
</body>
</html>

Add Leaflet.js + Vue.js map thingie
Add Leaflet.js + Vue.js map thingie
