So in this tutorial we will be working with Open Streets Maps. You have to get the users geo location then store that in a database. Afterwards, you can display their location on a web page. This tutorial is written in PHP and jQuery and a Ubuntu server.
What is So Great About This
The great things about this is that it is free! It works great too! I use it in a lot of my applications. These codes snippets will benefit you for years to come. Here is the functions.php file but there is actually several more file to make this work.
<?php /*MAP STUFF*/ //geocode function routemap($lat1, $lon1, $lat2, $lon2, $user1, $user2){ echo '<link rel="stylesheet" href="leaflet.css" /> <div id="map" style="width: 500px; height: 280px"></div> <script src="leaflet.js"></script> <script> let mapOptions = { center:['.$lat1.', '.$lon1.'], zoom:14 } let map = new L.map("map" , mapOptions); let layer = new L.TileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"); map.addLayer(layer); let locations = [ { "id": 1, "lat": '.$lat1.', "long": '.$lon1.', "src": "images/house.png", "title": "'.$user1.'", "url":"manage.php" }, { "id": 2, "lat": '.$lat2.', "long": '.$lon2.', "src": "images/house.png", "title": "'.$user1.'", "url":"manage.php" } ] let popupOption = { "closeButton":false } locations.forEach(element => { new L.Marker([element.lat,element.long]).addTo(map) .on("mouseover",event =>{ event.target.bindPopup("<div class="card"><img src=""+element.src+"" width="80" height="80" alt=""+element.title+""> <h3>"+element.title+"</h3></div>",popupOption).openPopup(); }) .on("mouseout", event => { event.target.closePopup(); }) .on("click" , () => { window.open(element.url); }) }); </script>'; } function geocode($address){ $address = urlencode($address); $url = "https://nominatim.openstreetmap.org/?addressdetails=1&q=$address&format=json&limit=1"; $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_REFERER, $url); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36"); $result = curl_exec($ch); curl_close($ch); return json_decode($result, true); } function showmap($latlon, $personname){ if(!empty($latlon)){ echo '<link rel="stylesheet" href="leaflet.css" /> <style>.leaflet-popup-content p{color:#000000;}</style> <div id="map" style="width: 100%; height:50vh;"></div> <script src="leaflet.js"></script> <script> let mapOptions = { center:['.$latlon.'], zoom:16 } let map = new L.map("map" , mapOptions); let layer = new L.TileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"); map.addLayer(layer); let customIcon = { iconUrl:"images/markers.png", iconSize:[40,40] } let myIcon = L.icon(customIcon); let iconOptions = { title:"company name", draggable:false, icon:myIcon } let marker = new L.Marker(['.$latlon.'] , iconOptions); marker.addTo(map); marker.bindPopup("content").openPopup(); let popup = L.popup().setLatLng(['.$latlon.'] ).setContent("<p>'.$personname.'</p>").openOn(map); </script>'; } } /*END OF MAP STUFF*/
Here are all the downloads you get in the zip file.
#maps #ubuntu #server #geolocation