我在我的项目中使用Phonegap查找当前位置,将经度和经度传递给php脚本,php搜索sql数据库,如果它附近有任何地方/机构到当前位置。我使用xampp获取输出,它在html屏幕上返回我的学院名称。但是,当我使用apk文件并在我的手机中运行相同的代码时,我只得到当前的lat / lon coord但是没有获得实际名称。 这是我的geolocation.html代码
<!DOCTYPE html>
<html>
<head>
<title>Device Properties Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
function onDeviceReady() {
navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
var lat;
var lon;
// onSuccess Geolocation
function onSuccess(position) {
var element = document.getElementById('geolocation');
element.innerHTML = 'Latitude: ' + position.coords.latitude + '<br />' +
'Longitude: ' + position.coords.longitude + '<br />' +
'Altitude: ' + position.coords.altitude + '<br />' +
'Accuracy: ' + position.coords.accuracy + '<br />' +
'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '<br />' +
'Heading: ' + position.coords.heading + '<br />' +
'Speed: ' + position.coords.speed + '<br />' +
'Timestamp: ' + position.timestamp + '<br />';
lat= position.coords.latitude;
lon= position.coords.longitude;
var xmlhttp;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("t01").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","http://geolocation.webatu.com/Radius.php?lat="+lat+"&lon="+lon,true)
xmlhttp.send();
}
// onError Callback receives a PositionError object
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
</script>
</head>
<body>
<p id="geolocation">Finding geolocation...</p>
<div id="main">
<div id="t01"></div>
</div>
</body>
</html>
这是radius.php代码。上传到000webhost.com
<?php
$mysql_host = "****";
$mysql_database = "****";
$mysql_user = "****";
$mysql_password = "****";
$con=mysqli_connect($mysql_host,$mysql_user,$mysql_password,$mysql_database);
// Check connection
if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$rad = 7.442; // radius of bounding circle in kilometers
$R = 6371; // earth's mean radius, km
$lat = $_GET['lat'];
$lon = $_GET['lon'];
$sql = mysqli_query($con,"SELECT ID, ClassName,City, latitude, longitude, ( 6371 * acos( cos( radians('$lat') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians('$lon') ) + sin( radians('$lat') ) * sin( radians( latitude ) ) ) ) AS distance FROM geodata HAVING distance < '$rad' ORDER BY distance LIMIT 0 , 20") or die('Error: ' . mysqli_error($con));
while($row = mysqli_fetch_array($sql)){
echo $row['ID'] . " " . $row['ClassName'];
echo "<br>";
}
mysqli_close($con);
?>
我的数据库已上传到000webhost,其中包含coreect密码,webhost,用户和数据库名称。请帮帮我。请参阅The Code正在Xampp中工作但不能在我的Android手机上工作
答案 0 :(得分:1)
首先 - 你为什么要编写与IE6兼容的XHR代码?您不必担心移动设备上的IE6。话虽这么说,你修改了config.xml中的标签吗?详情请见http://cordova.apache.org/docs/en/3.4.0/guide_appdev_whitelist_index.md.html#Whitelist%20Guide
答案 1 :(得分:0)
PhoneGap不能包含PHP包。您可以使用其他方法与数据库进行交互,您可以使用javascript将Ajax调用中的数据传递给处理响应的PHP页面。 (只是这样做的一种示例)。
但是要回答你的问题,你可以将PHP封装在phonegap中。