Normalde pek yazılım ile ilgili birşeyler yazmam ama bir süredir aklımı kurcalayan bir sistemi anlatmak istiyorum.

Gittiğimiz gezdiğimiz yerlerin lokasyon dökümlerini almayı seviyorum. Ayrıca canlı olarak “Neredeyim” gibi bir sayfa da hep hoşuma gidiyor. Bunun için kullandığım iki sistemi biraz açayım;

track.gs

eğer hiç birşey ile uğraşmayayım, sayfama falan da koymayacağım, sadece bir link olsun, kolay olsun diyorsanız iOS için oldukça güzel bir uygulama var: track.gs girin kurcalayın. Mis.

location-tracker

Ben daha önce hep track.gs kullandım. Kolay olmasına kolay ama sayfanıza embed edemiyorsunuz, data sizin kontrolünüzde değil vb.. Biraz yazılım merakı varsa yetmemeye başlıyor insana.

O yüzden oturdum bir canlı takip sistemi yazdım. (daha önce http://btrack.co gibi bir tekne takip sistemi yazmış olmanın verdiği haklı gurur ile 🙂 ) Ancak benim için önemli olan şey, bir uygulama yazmakla uğraşmadan, ücretsiz ve kolay bir çözüm üretmekti. Çok detay istemiyordum. Sadece kabaca nerede olduğumu bir veritabanına aktarmak ve bir haritada göstermek istiyordum. Böyle aranırken miataruyu buldum. Tam olarak bunu yapıyordu ama çok karışık bir sunucu kurulumu vardı. Üstelik istemediğim zirilyon özelliği vardı üzerinde. Dedim ya derdim basitlik; 2 kısa kod parçası hazırladım. https://github.com/ozgurakman/location-tracker adresinden kurcalayabilirsiniz. 

Screenshot 2015-08-28 17.01.29

Biraz detay vereyim;

post.php verileri yakalan sayfa. uygulamanın ayarlarından server-URL’yi bu script’e yönlendirdiğinizde uygulama lokasyon verilerini bu sayfadaki gibi sunucuya aktarıyor. post.php’nin tek yaptığı şey, verileri ayıklayıp, cihaz kontrolünden sonra veritabanına eklemek.

<? 
$dbhost = "";
$dbname = "";
$dbuser = "";
$dbpass = "";

$db = new mysqli($dbhost, $dbuser, $dbpass, $dbname);

if (mysqli_connect_errno()) {
 printf("Connect failed: %s\n", mysqli_connect_error());
 exit();
}$responseData = json_decode(file_get_contents('php://input'), true);

if ($responseData['MiataruLocation'] != '') {
  foreach ($responseData['MiataruLocation'] as $key => $value) {
    if ($value['Device'] == 'XXX-XXXX-XXX') { // This is your device ID!
      $loccheckq = $db->query("SELECT * FROM latlng WHERE ts = '".date("Y-m-d H:i:s", $value['Timestamp'])."'");
      if ($loccheckq->num_rows == 0) {
      $db->query("INSERT INTO latlng (ts,lat,lng) VALUES ('".date("Y-m-d H:i:s",$value['Timestamp'])."','".$value['Latitude']."','".$value['Longitude']."')");
      }
   }
  }
}
die;
?>

track.php ise bu veritabanından bilgileri alıp misler gibi gösteriyor. github’daki kod üzerinde detaylı olarak açıkladım her bloğun yaptıklarını.

Umarım işinize yarar!