我正在尝试使用PHP和javascript发送lat和lon以及网络摄像头图像和其他一些数据 - 不要问,这只是我开始的一个小项目,希望能学到一些东西。为了使lat和lon可用,我必须在检索到lat和lon之后调用网络摄像头功能。这是我正在使用的javascript(地理定位部分来自Lynda.com。我将其与JpegCam合并)。我添加了lat和lon div来保存值。然后我调用网络摄像头函数now_go()
,使用getElementById()获取lat和long。只要用户共享其位置,这就很有用。如果不这样做,则不会调用now_go()函数。但是,如果我之前更早地调用它,即使用户决定分享他们的位置,也不能使用lat和lon。那么在游戏的哪个阶段,我可以判断用户是否已选择不共享?
<script type="text/javascript">
var t = new bwTable();
var geo;
function getGeoLocation() {
try {
if( !! navigator.geolocation ) return navigator.geolocation;
else return undefined;
} catch(e) {
return undefined;
}
}
function show_coords(position) {
var lat = position.coords.latitude;
var lon = position.coords.longitude;
element('lat').innerHTML = lat;
element('lon').innerHTML = lon;
t.updateRow(0, [ lat.toString(), lon.toString() ] );
dispResults();
now_go();
}
function dispResults() {
element('results').innerHTML = t.getTableHTML();
}
function init() {
if((geo = getGeoLocation())) {
statusMessage('Using HTML5 Geolocation')
t.setHeader( [ 'Latitude', 'Longitude' ] );
t.addRow( [ ' ', ' ' ] );
} else {
statusMessage('HTML5 Geolocation is not supported.')
}
geo.getCurrentPosition(show_coords);
}
window.onload = function() {
init();
}
</script>
这是我变成一个函数的网络摄像头脚本的一部分,所以我可以在获取lat和lon之后调用它:
<script language="JavaScript">
function now_go(){
var lat = null;
var lon = null;
if ($("#lat").length > 0){
var lat = document.getElementById('lat').innerHTML;
}
if ($("#lon").length > 0){
var lon = document.getElementById('lon').innerHTML;
}
webcam.set_api_url( 'webcam/test/' + lat + '/' + lon);
webcam.set_quality( 90 ); // JPEG quality (1 - 100)
webcam.set_shutter_sound( true, '/mark/js/webcam/shutter.mp3' );
}
</script>
我确定此代码还有其他问题,但这就是它现在的样子。到了上午五点,我觉得它会保持这种状态一段时间。
任何建议或建议都会很棒。
谢谢, 标记
答案 0 :(得分:8)
见this link。 navigator.geolocation.getCurrentPosition()方法有第二个参数,允许您传入另一个函数:
navigator.geolocation.getCurrentPosition(show_coords, function(error) {
switch(error.code)
{
case error.PERMISSION_DENIED: alert("user did not share geolocation data");
break;
case error.POSITION_UNAVAILABLE: alert("could not detect current position");
break;
case error.TIMEOUT: alert("retrieving position timedout");
break;
default: alert("unknown error");
break;
}
});