Newer
Older
skip-web / event / oasis2017 / idol / idol.js
@mituyuki mituyuki on 29 Jul 2017 2 KB add js and cgi
function game(){
    var gps = document.getElementById("get");
    var txt = document.getElementById("txt");
    var sa = document.getElementById("geosa");
    var num = 0, latlng;
    var dis;
    function tryGetGPS() {
	if (fail == -1) {fail = 3;}
        navigator.geolocation.getCurrentPosition(
            onSuccess, onError,{
                maximumAge: 0, timeout: 3000, enableHighAccuracy: true
            });
    }
    function onSuccess(pos){
	if (num == 0){
	    latlng =  L.latLng([pos.coords.latitude, pos.coords.longitude]);
	    txt.textContent = "位置情報の取得に成功";
	    num += 1; 
	} else {
	    var lat1 = L.latLng([pos.coords.latitude, pos.coords.longitude]);
	    dis = latlng.distanceTo(lat1)
	    dis = dis /= 5;
	    alert(dis);
	    sa.textContent = "移動によるボーナスポイント:"+dis;	    
	    txt.textContent = "位置情報の取得に成功";
	    latlng = lat1;
	    document.getElementById('js-sub').addEventListener('click', submit);
	} 
    }
    var fail = 3;	
    function onError(err) {                     // 失敗時
        txt.textContent = "現在位置の取得失敗.(あと"+(--fail)+"回実行します)";
	if (fail > 0){
     	    tryGetGPS();
	}  
	else {
	    txt.textContent = "現在位置をよみとれません。QRコードからお楽しみ下さい"
	    
	}
    }
    function respond(str) {
	if (this.readyState == 4) {
	    var resp = JSON.parse(this.responseText);
	    var str = resp['差'];
	    document.getElementById('result').textContent = str;
	}
    }	    
    function submit() {
	if (dis != undefined) {
	    var conn = new XMLHttpRequest();
	    conn.open('POST', './idol.cgi');
	    conn.setRequestHeader(
		'Content-Type', 'application/x-www-form-urlencoded');
            conn.send('value='+encodeURIComponent(dis))
	    conn.onreadystatechange = respond;
	}
    }
    gps.addEventListener("click", function() {tryGetGPS();}, false);
    document.getElementById('js-sub').addEventListener('click', submit);   
}
document.addEventListener("DOMContentLoaded", function() {
    game();}, false);