arnaucube
arnaucube/cellMapVisualizerPublic Self-hosted repository
frontend: added petitions on drag the map
arnaucode idoctnef@openmailbox.org
Thu, 03 Aug 2017 19:38:19 +0200
commit

95f8ef335133dc72d725a83476eee2c4b99a90a7

parent

b02dddb47ef8dfcceced8be691b62f8c42273875

M web/app.js → web/app.js

@@ -1,6 +1,7 @@

'use strict'; -var urlapi = "http://127.0.0.1:3017/"; +//var urlapi = "http://127.0.0.1:3017/"; +var urlapi = "http://51.255.193.106:3017/"; // Declare app level module which depends on views, and components angular.module('webApp', [
M web/bower.json → web/bower.json

@@ -13,6 +13,7 @@ "angular-bootstrap-material": "abm#^0.1.4",

"angular-bootstrap": "^2.5.0", "angular-messages": "^1.6.5", "components-font-awesome": "^4.7.0", - "ui-leaflet": "^2.0.0" + "ui-leaflet": "^2.0.0", + "angular-leaflet-directive": "^0.10.0" } }
M web/index.html → web/index.html

@@ -43,6 +43,7 @@ <!-- openstreetmaps angular - leaflet -->

<script src="bower_components/leaflet/dist/leaflet.js"></script> <script src="bower_components/angular-simple-logger/dist/angular-simple-logger.js"></script> <script src="bower_components/ui-leaflet/dist/ui-leaflet.js"></script> + <script src="bower_components/angular-leaflet-directive/dist/angular-leaflet-directive.js"></script> <link rel="stylesheet" href="bower_components/leaflet/dist/leaflet.css" /> <!-- Angular Chart -->
M web/views/main/main.html → web/views/main/main.html

@@ -26,12 +26,16 @@ </div>

<div class="col-sm-9"> <div class="panel"> <div class="panel-heading c_blueGrey300"> - <h3 class="panel-title">Map</h3> + <h3 class="panel-title">Map - showing {{cells.length}} cells</h3> </div> <div class="panel-body"> - <leaflet width="100%" height="600px" markers="markers" paths="paths" center="center" tiles="tiles" id="map-simple-map"></leaflet> + <leaflet width="100%" height="600px" markers="markers" paths="paths" center="center" + tiles="tiles" id="map-simple-map"></leaflet> </div> </div> + <p><b>Current zoom level: {{center.zoom}}.</b> Due large amount of data, need zoom level equal or greater than 17 to get the cells data.</p> + <br> + {{status}} </div> </div> </div>
M web/views/main/main.js → web/views/main/main.js

@@ -1,57 +1,109 @@

'use strict'; -angular.module('app.main', ['ngRoute', 'ui-leaflet']) +angular.module('app.main', ['ngRoute', 'leaflet-directive']) -.config(['$routeProvider', function($routeProvider) { - $routeProvider.when('/main', { - templateUrl: 'views/main/main.html', - controller: 'MainCtrl' - }); -}]) + .config(['$routeProvider', function($routeProvider) { + $routeProvider.when('/main', { + templateUrl: 'views/main/main.html', + controller: 'MainCtrl' + }); + }]) -.controller('MainCtrl', function($scope, $http) { - //map - $scope.center = {}; - $scope.bounds = {}; - $scope.markers = []; - $scope.paths = []; - $scope.tiles = { - //url: "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", - url: "http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png", - // més estils https://leaflet-extras.github.io/leaflet-providers/preview/ - options: { - attribution: '<a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' - } - }; - //var antennaIcon = L.icon({ - var antennaIcon = { - iconUrl: 'img/antenna.png', - iconSize: [50, 50], // size of the icon - iconAnchor: [25, 50], // point of the icon which will correspond to marker's location - }; - - $http.get(urlapi + 'cells/43.73429/7.41841/43.73210/7.42196') - .then(function(data) { - console.log('data success'); - console.log(data); - $scope.cells = data.data; - //draw markers on map - $scope.markers = []; - for (var i = 0; i < $scope.cells.length; i++) { - $scope.markers.push({ - lat: Number($scope.cells[i].lat), - lng: Number($scope.cells[i].lon), - message: $scope.cells[i].mcc, - icon: antennaIcon - }); + .controller('MainCtrl', function($scope, $http, leafletMapEvents) { + //map + $scope.center = { + lat: 41.38014146592283, + lng: 2.1773743629455566, + zoom: 17 + }; + $scope.bounds = {}; + $scope.markers = []; + $scope.paths = []; + $scope.tiles = { + //url: "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", + url: "http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png", + // més estils https://leaflet-extras.github.io/leaflet-providers/preview/ + options: { + attribution: '<a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' } - - $scope.center = { - lat: (Number($scope.cells[0].lat) + Number($scope.cells[0].lat)) / 2, - lng: (Number($scope.cells[0].lon) + Number($scope.cells[0].lon)) / 2, - zoom: 16 - }; - }, function(data) { - console.log('data error'); + }; + $scope.events = { + map: { + enable: ['dragend'], + logic: 'emit' + } + }; + $scope.eventDetected = "No events yet..."; + console.log($scope.eventDetected); + $scope.$on('leafletDirectiveMap.map-simple-map.dragend', function(event) { + $scope.eventDetected = "Dragend"; + console.log($scope.eventDetected); + console.log($scope.center); + if ($scope.center.zoom > 16) { + $scope.getCells($scope.center.lat, $scope.center.lng); + } }); -}); + + var antennaIcon = { + iconUrl: 'img/antenna.png', + iconSize: [50, 50], // size of the icon + iconAnchor: [25, 50], // point of the icon which will correspond to marker's location + }; + var markX = { + iconUrl: 'img/markX.png', + iconSize: [50, 50], // size of the icon + iconAnchor: [25, 50], // point of the icon which will correspond to marker's location + }; + var markY = { + iconUrl: 'img/markY.png', + iconSize: [50, 50], // size of the icon + iconAnchor: [25, 50], // point of the icon which will correspond to marker's location + }; + $scope.getCells = function(lat, lng) { + $scope.status = "getting data"; + var xLat = lat + 0.002; + var xLng = lng - 0.004; + var yLat = lat - 0.002; + var yLng = lng + 0.004; + console.log(xLat + ", " + xLng); + console.log(yLat + ", " + yLng); + //$http.get(urlapi + 'cells/43.73429/7.41841/43.73210/7.42196') + $http.get(urlapi + 'cells/' + xLat + '/' + xLng + '/' + yLat + '/' + yLng) + .then(function(data) { + console.log('data success'); + console.log(data); + $scope.cells = data.data; + //draw markers on map + $scope.markers = []; + $scope.markers.push({ + lat: Number(xLat), + lng: Number(xLng), + icon: markX + }); + $scope.markers.push({ + lat: Number(yLat), + lng: Number(yLng), + icon: markY + }); + for (var i = 0; i < $scope.cells.length; i++) { + $scope.markers.push({ + lat: Number($scope.cells[i].lat), + lng: Number($scope.cells[i].lon), + message: "lat:" + $scope.cells[i].lat + ", lon:" + $scope.cells[i].lon, + icon: antennaIcon + }); + } + + /*$scope.center = { + lat: (Number($scope.cells[0].lat) + Number($scope.cells[0].lat)) / 2, + lng: (Number($scope.cells[0].lon) + Number($scope.cells[0].lon)) / 2, + zoom: 16 + };*/ + $scope.status = "data charged"; + }, function(data) { + console.log('data error'); + }); + }; + $scope.getCells(41.38014146592283, 2.1773743629455566); + $scope.status = "getting data"; + });