如何将地理位置输出导出到日志文件?
Posted
技术标签:
【中文标题】如何将地理位置输出导出到日志文件?【英文标题】:how can i export the geolocation output to log file? 【发布时间】:2015-07-14 13:32:34 【问题描述】:我有这段代码,它显示地理位置(经度:xx 纬度:xx 精度:xxx)..当任何人访问 url 时,我如何将结果输出到日志文件 log.txt
<!-- <xml version="1.0" encoding="utf-8"> -->
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Geolocation API Demo</title>
<meta content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" name="viewport"/>
<script>
function successHandler(location)
var message = document.getElementById("message"), html = [];
html.push("<img width='512' height='512' src='http://maps.google.com/maps/api/staticmap?center=", location.coords.latitude, ",", location.coords.longitude, "&markers=size:small|color:blue|", location.coords.latitude, ",", location.coords.longitude, "&zoom=16&size=512x512&sensor=false' />");
html.push("<p>Longitude: ", location.coords.longitude, "</p>");
html.push("<p>Latitude: ", location.coords.latitude, "</p>");
html.push("<p>Accuracy: ", location.coords.accuracy, " meters</p>");
message.innerHTML = html.join("");
function errorHandler(error)
alert('Attempt to get location failed: ' + error.message);
navigator.geolocation.getCurrentPosition(successHandler, errorHandler);
</script>
</head>
<body>
<div id="message">Location unknown</div>
</body>
</html>
【问题讨论】:
你想用java还是php导出。 您必须在服务器端执行此操作,将对象发送到服务器并使用它做任何您想做的事情。 JS 无权访问客户端/服务器文件系统 是否要将所有用户的结果附加到同一个文件中?无法通过客户端保存文件。 我想使用 php @Satya 导出 不,我想将结果附加到单独的文件 log.txt @NishantGhodke 【参考方案1】:这是将数据异步发送到服务器的 javascript 代码。
function successHandler(location)
var message = document.getElementById("message"), html = [];
html.push("<img width='512' height='512' src='http://maps.google.com/maps/api/staticmap?center=", location.coords.latitude, ",", location.coords.longitude, "&markers=size:small|color:blue|", location.coords.latitude, ",", location.coords.longitude, "&zoom=16&size=512x512&sensor=false' />");
html.push("<p>Longitude: ", location.coords.longitude, "</p>");
html.push("<p>Latitude: ", location.coords.latitude, "</p>");
html.push("<p>Accuracy: ", location.coords.accuracy, " meters</p>");
message.innerHTML = html.join("");
//Send this to server
var xmlhttp;
if (window.XMLHttpRequest) // code for IE7+, Firefox, Chrome, Opera
xmlhttp=new XMLHttpRequest();
else // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("POST","script.php",true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
xmlhttp.send("latitude="+location.coords.latitude+"&longitude="+location.coords.longitude+"&accuracy="+location.coords.accuracy); // pass data, assuming lat, long, acc are respective js variables
function errorHandler(error)
alert('Attempt to get location failed: ' + error.message);
navigator.geolocation.getCurrentPosition(successHandler, errorHandler);
在服务器端检索数据并使用以下 PHP 代码 (script.php) 保存
<?php
$latitude = $_POST['latitude'];
$longitude = $_POST['longitude'];
$accuracy = $_POST['accuracy'];
$string = $latitude." - ".$longitude." | ".$accuracy; // this will turn into 00000 - 00000 | 0.25
$myfile = file_put_contents('log.txt', $string.PHP_EOL, FILE_APPEND);
?>
【讨论】:
非常感谢,但是如何将 java 代码调用到我的服务器中? :( 我已根据您的需要更新了我的答案。请尝试一下。 非常感谢它对我有用,但是 log.txt 文件有一个输出错误,它显示这样的纬度结果?3??553086 我不知道为什么 尝试使用console.log(var_name)调试js变量;并在浏览器的控制台区域查看输出。比较发送的数据和接收的数据。可能与您收到的价值相同。【参考方案2】:为此,您需要一个可以在其系统本地存储数据的服务器端。我建议您使用 PHP 或任何其他您知道的服务器端语言。
您将编写一个程序,该程序将接收一个对象,或者可能只接收 2 个变量,并将其存储到 file.txt 中。
这应该不是很难,如果您感到困惑,您应该查找 JavaScript AJAX 调用。
【讨论】:
我有服务器端,但我不知道如何调用该对象:( 您应该能够了解如何通过 AJAX 调用向 PHP 发送数据。使用谷歌,您应该能够找到问题的答案。您不需要向服务器发送对象,只需发送 2 个变量即可。【参考方案3】:这里是java代码。
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)
alert(xmlhttp.responseText);
xmlhttp.open("POST","file.jsp?latitude="+location.coords.latitude+"&longitude="+location.coords.longitude+"&accuracy="+location.coords.accuracy,true);
xmlhttp.send();
在 Jsp(file.jsp) 中写入。最好在 servlet 中而不是在 JSP 中编写 java 代码。
java.io.File file = new java.io.File("d://filename.log");
java.io.FileWriter writer = new java.io.FileWriter(file);
writer.write(request.getParameter("latitude")+" "+request.getParameter("longitude")+" "+request.getParameter("accuracy"));
writer.flush();
writer.close();
【讨论】:
非常感谢你能写出完整的代码吗:( @Monica,在你的脚本中使用上面给出的 ajax 代码意味着在 successHandler() 函数调用中。 我的意思是java代码和我的代码你能把它们附加到一个代码中吗? 我试图这样做,它现在告诉'位置未知':(以上是关于如何将地理位置输出导出到日志文件?的主要内容,如果未能解决你的问题,请参考以下文章