<?php 
 require_once("db.php"); 
 $companies = $conn->getCompaniesList(); 
 $streets = $conn->getStreetsList(); 
 $areas = $conn->getAreasList(); 
?> 
<!DOCTYPE html> 
<html> 
<head> 
 <title>Leaflet basic example</title> 
 <script src="js/jquery.min.js"></script> 
 <link rel="stylesheet" href="css/leaflet.css" /> 
 <script src="js/leaflet.js"></script> 
</head> 
<body> 
<input type="text" name="search" id="search" /> <input type="button" id="searchBtn" value="Search" /> 
 
 <div id="map" style="width: 600px; height: 400px"></div> 
 <div id="searchresult"></div> 
 
 <script> 
 
  var map = L.map('map').setView([51.505, -0.09], 13); 
 
  L.tileLayer( 'https://api.mapbox.com/styles/v1/mapbox/streets-v10/tiles/{z}/{x}/{y}?access_token=pk.eyJ1IjoibWVnYTYzODIiLCJhIjoiY2ozbXpsZHgxMDAzNjJxbndweDQ4am5mZyJ9.uHEjtQhnIuva7f6pAfrdTw', { 
   maxZoom: 18, 
   attribution: 'Map data © <a href="http://openstreetmap.org/"> OpenStreetMap </a> contributors, ' + 
    '<a href="http://creativecommons.org/"> CC-BY-SA </a>, ' + 
    'Imagery ? <a href="http://mapbox.com">Mapbox</a>', 
   id: 'examples.map-i875mjb7' 
  }).addTo(map); 
   
  $( document ).ready(function() { 
    $('#searchBtn').click(function() { 
      $.ajax({ 
        type: "GET", 
        url: "ajax.php?keyword="+$("#search").val() 
      }).done(function( data ) 
      { 
        var jsonData = JSON.parse(data); 
        var jsonLength = jsonData.results.length; 
        var html = "<ul>"; 
        for (var i = 0; i < jsonLength; i++) { 
          var result = jsonData.results[i]; 
          html += '<li data-lat="' + result.latitude + '" data-lng="' + result.longitude + '" class="searchResultElement">' + result.name + '</li>'; 
        } 
        html += '</ul>'; 
        $('#searchresult').html(html);           
        $( 'li.searchResultElement' ).click( function() { 
          var lat = $(this).attr( "data-lat" ); 
          var lng = $(this).attr( "data-lng" ); 
          map.panTo( [lat,lng] ); 
        }); 
      }); 
    }); 
   addCompanies();    
   addStreets();    
   addAreas();    
  }); 
   
  function addCompanies() { 
   for(var i=0; i<companies.length; i++) { 
    var marker = L.marker( [companies[i]['latitude'], companies[i]['longitude']]).addTo(map); 
    marker.bindPopup( "<b>" + companies[i]['company']+"</b><br>Details:" + companies[i]['details'] + "<br />Telephone: " + companies[i]['telephone']); 
   } 
  } 
   
  function stringToGeoPoints( geo ) { 
   var linesPin = geo.split(","); 
 
   var linesLat = new Array(); 
   var linesLng = new Array(); 
 
   for(i=0; i < linesPin.length; i++) { 
    if(i % 2) { 
     linesLat.push(linesPin[i]); 
    }else{ 
     linesLng.push(linesPin[i]); 
    } 
   } 
 
   var latLngLine = new Array(); 
 
   for(i=0; i<linesLng.length;i++) { 
    latLngLine.push( L.latLng( linesLat[i], linesLng[i])); 
   } 
    
   return latLngLine; 
  } 
   
  function addAreas() { 
   for(var i=0; i < areas.length; i++) { 
       console.log(areas[i]['geolocations']); 
    var polygon = L.polygon( stringToGeoPoints(areas[i]['geolocations']), { color: 'blue'}).addTo(map); 
    polygon.bindPopup( "<b>" + areas[i]['name']);    
   } 
  } 
   
  function addStreets() { 
   for(var i=0; i < streets.length; i++) { 
    var polyline = L.polyline( stringToGeoPoints(streets[i]['geolocations']), { color: 'red'}).addTo(map); 
    polyline.bindPopup( "<b>" + streets[i]['name']);    
   } 
  } 
   
  var companies = JSON.parse( '<?php echo json_encode($companies) ?>' ); 
  var streets = JSON.parse( '<?php echo json_encode($streets) ?>' ); 
  var areas = JSON.parse( '<?php echo json_encode($areas) ?>' ); 
 </script> 
</body> 
</html>
 
 |