2014-04-24 9 views
7

bir arama çıktı. Buradaki bir şey benim uygulamamda, bir etkinliğin kullanıcıların mevcut konumlarını veritabanına gönderdiği ve bu konumu kullanarak veritabanında, bu tablonun diğer kullanıcı konumlarından oluştuğu, bu değerleri getirdiğim başka bir tabloyu işaret ettiğidir. şimdi yapmak istediğim, kullanıcıların mevcut konumlarını kullanmak ve hesaplamak isteyen diğer kullanıcılara başvurmak ve en yakın kullanıcıyı seçmek yerine, ileriye gittim ve bir .php dosyası yaptım. ve web tarayıcısında çalıştırıldığında bana doğru ans gösterir. ama uygulamada çalışmıyor gibi görünüyor. Eğer bu computaton bir javascript kullanır yapar, php dosyası tat aklınızda. Bu, en yakın kullanıcıyı bulabilen async görevimde aradığım php dosyasıdır. php dosyasıandroid bazı js kodu ile bir php dosyasını çağırırken, js kodu bu android uygulama yapmak ve ben bir sorun ile sıkışmış am gibi ben

<?php 
$response = array(); 
include 'db_con.php'; 

// run query 
$query = mysqli_query($con,"SELECT *FROM friend WHERE d_status='0'"); 
// look through query 

if (!empty($query)) { 
    // check for empty result 
    $response["details"] = array(); 
while($row =mysqli_fetch_assoc($query)){ 
    $details= array(); 
    $details["Latitude"]= $row["d_latitude"]; 
    $details["Longitude"]= $row["d_longitude"]; 
    array_push($response["details"], $details); 
    } 
} 
     // success 
    $response["success"] = 1; 
    // echoing JSON response 
    echo json_encode($response); 

mysqli_close($con); 
$lat=15.493403; 
$longi=73.820617; 
?> 

<!DOCTYPE html> 
<html> 
<body> 
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2 /jquery.min.js"></script> 
<script type="text/javascript"> 
var latlon = new Array(); 
var map; 
var lat=15.493403;//"<?php echo $lat; ?>"; 
var longi=73.820617;//"<?php echo $longi; ?>"; 
var geocoder; 
var origin =new google.maps.LatLng(lat,longi); 
function mapLoad(){ 
      var data="<?php echo $response;?>"; 
      var data_parsed = JSON.parse(data); 
      var resp = data_parsed['details']; 
      for (var i in resp) { 

      latlon[i]=(resp[i].Latitude+","+resp[i].Longitude); 
      //alert("latit:"+latlon[i]); 
      } 
      calculateDistances(); 

} 
var directionsDisplay; 
var directionsService = new google.maps.DirectionsService(); 

function calculateDistances() { 

var service = new google.maps.DistanceMatrixService(); 
service.getDistanceMatrix({ 
    origins:[origin], //array of origins 
    destinations: latlon, //array of destinations 
    travelMode: google.maps.TravelMode.DRIVING, 
    unitSystem: google.maps.UnitSystem.METRIC, 
    avoidHighways: false, 
    avoidTolls: false 
}, callback); //agettaxicoor 
} 

function callback(response, status) { 

if (status != google.maps.DistanceMatrixStatus.OK) { 
    alert('Error was: ' + status); 
} else { 
    //we only have one origin so there should only be one row 
    var routes = response.rows[0]; 
    //need to find the shortest 
    var lowest = Number.POSITIVE_INFINITY; 
    var tmp; 
    var shortestRouteIdx; 
    var resultText = "Possible Routes: <br/>"; 
    for (var i = routes.elements.length - 1; i >= 0; i--) { 
     tmp = routes.elements[i].duration.value; 
     resultText += "Route " + latlon[i] + ": " + tmp + "<br/>"; 


     if (tmp < lowest) { 
      lowest = tmp; 
      shortestRouteIdx = i; 
     } 
    } 
    //log the routes and duration. 
    $('#results').html(resultText); 

    //get the shortest route 
    var shortestRoute = latlon[shortestRouteIdx]; 
    var res = JSON.stringify(shortestRoute .split(","));  

    //alert(res); 
    location.href="atestb.php?Result=" + res; //this where the result is set. 
    } 
    }  
</script> 
<body onload="mapLoad();"></body> 
</body> 
</html> 

i Tutulma hata ayıklama aracını kullandığınızda ama şimdi sorun gördüğüm olduğunu bütün kod

DOCTYPE html sonra

, async görev json çağrısının çıktısı haline gelir.

temel olarak tek yapmam gereken şey bu php dosyasını uygulamadan çağırmaktır, en yakın kullanıcıyı hesaplamalı ve en yakın kullanıcının enlem ve boylam değerini uygulamala eşleştirmelidir. dosya değişkeni veya yukarıdaki örnek gibi başka bir php dosyası değişkeni güncellemenin bunu yapmanın doğru yolu olmadığını biliyorum, bu nedenle herhangi bir yardım gud olur.

+0

nedenini sorabilir miyim PHP kullanıyor musunuz? Artı, sanırım PHP'yi android üzerinde çalıştıramazsın. Apache + php'ye ihtiyacınız var, bu yüzden bilgisayarda çalışıyor, bir android değil. Bir php dosyası kullanmak istiyorsanız, bir sunucuya koyun ve ardından ajax kullanarak uygulamanızdan isteyin. (android uygulamasında IE kodu bir şey ifade etmiyor) – Larta

+0

bundan bahsetmediğim için üzgünüm, ama bu dosya sunucuda. –

cevap

1

Doğrudan Android kaynak kodunuzu kullanarak javascript'i çalıştıramazsınız. Sunucuya bir çağrı yaptığınızda, bir içerik akışı döndürür, işte bu! Web servisiniz javascript'i döndürdüğü için, android kodu js kodunu bir dizge gibi gösteriyor.

Ya js mantığınızı php'ye dönüştürmeli ve hesaplanan sonucu döndürmeli ya da js'yi çalıştırabilmeniz ve sonucunuzu iletebilmeniz için uygulamanızda bir web görünümü kullanmalısınız. Bu danışabilir: How to execute JavaScript on Android?

Düzenleme: perde arkasında bir web görüntülemesini yaratır ve javascript yürütür bu kütüphane bulunmaktadır (not: Ben kütüphaneye kendim test etmedim)

https://github.com/evgenyneu/js-evaluator-for-android

İlgili konular