Zrobiłem tę aplikację Android i jestem trochę utknął z problemem. Chodzi o to, że w mojej aplikacji jedno działanie wysyła użytkownikom bieżącą lokalizację do bazy danych, a przy użyciu tej właśnie lokalizacji odsyłam kolejną tabelę w bazie danych, gdzie pobierane są te wartości, gdzie ta tabela składa się z lokalizacji innych użytkowników. , więc teraz, co chcę zrobić, to używać aktualnej lokalizacji użytkowników i kierując lokalizację innych użytkowników, którzy chcą obliczyć, a następnie wybrać najbliższego użytkownika, zrobiłem plik .php. a kiedy uruchomię przeglądarkę internetową, pokazuje mi poprawne ans. ale nie działa w aplikacji. Pamiętaj, że tat pliku php sprawia, że ten komputer używa javascript. to jest plik php, który wywołuję w moim asynchronicznym zadaniu, które znajduje najbliższego użytkownika. plik phppodczas wywoływania pliku php z jakimś kodem js z androida, kod js jest wynikiem takiego wywołania
<?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>
ale teraz problem jest podczas korzystania z narzędzia do debugowania w Eclipse widzę, że cały kod po
DOCTYPE html
staje się wyjściem wywołania asynchronicznego wywołania json.
więc w zasadzie wszystko, co chcę zrobić, to wywołać ten plik php z aplikacji, powinien obliczyć najbliższego użytkownika i zwrócić wartość szerokości i długości geograficznej najbliższego użytkownika aplikacji. Może to być aktualizacja tego samego php Zmienna pliku lub aktualizacja innej zmiennej pliku php, jak powyższy przypadek Wiem, że to może nie być właściwy sposób, aby to zrobić, więc każda pomoc będzie gud.
mogę zapytać, dlaczego używasz PHP? Plus, myślę, że nie można uruchomić PHP na Androida. Potrzebujesz apache + php, dlatego działa na komputerze, a nie na Androidzie. Jeśli chcesz użyć pliku php, umieść go na serwerze, a następnie poproś o niego z aplikacji za pomocą ajax. (Kod IE w aplikacji na Androida nic nie znaczy) – Larta
Niestety nie wspominam o tym, ale ten plik znajduje się na serwerze. –