Wie ich die Realität in der Bibliothek ergänzt habe

    Bild, um Aufmerksamkeit zu erregen
    Ein Bild, das Aufmerksamkeit erregt.
    Ich bin der erste, der Navigationstechnologie einsetzt, um Augmented Reality zu erstellen.
    Geolokalisierungstechnologien sind seit langem bekannt und in allen sprachlichen Teilen des Internets, einschließlich Russisch, gut dokumentiert. Aber egal wie überraschend es ist, bis jetzt hat niemand es wirklich in der Praxis angewendet. Vor ein paar Jahren las ich zur gleichen Zeit über Pläne zur Verwendung von Augmented-Reality-Karten. Soweit ich jedoch sehen kann, wurde es bis auf das Eindringen nirgendwo wieder verwendet.
    Im Dezember 2011 hat die Regionale Kinderbibliothek Woronesch eine eigene lokale Geschichtsressource für Kinder der Region Woronesch erstelltund seitdem systematisch mit kurzen Anmerkungen zu Denkmälern, Gedenkstätten und anderen Informationen über die Region Woronesch gefüllt. Benutzer können diese Informationen und Hinweise auf die Literatur der lokalen Überlieferungen, die in der Bibliothek verfügbar ist, jederzeit erhalten.
    Alles ist sehr einfach. Informationen sind bereits auf der Website. Jeder dieser Artikel ist der einzige Eintrag in der Datenbank in Form von HTML-Code. Zur Anzeige genügt eine Anfrage. Aber Sie müssen es dem Benutzer irgendwie liefern. Hier wurde die Idee eines "Leitfadens" geboren.
    Es gibt viele Gäste in Voronezh. Dies sind Studenten aus anderen Städten und Ausländer, die ihren Dienst angetreten haben, und nur Touristen. Sie alle lieben es, unsere Sehenswürdigkeiten und Denkmäler zu sehen. Und es ist immer bequemer, etwas zur Hand zu haben, mit dem Sie sich lange Zeit nicht befassen müssen.
    Aus diesem Grund habe ich beschlossen, jede Aufzeichnung an bestimmte Koordinaten am Boden zu binden. Wenn dies nicht Augmented Reality ist, was dann?
    Wir werden die konkrete Umsetzung analysieren.
    Nachdem ich eine Woche lang nach vorgefertigten Lösungen gesucht und nichts Passendes gefunden hatte, entschloss ich mich, alles auf meine eigene Weise zu tun. Erstens das Verfahren zum Bestimmen der Koordinaten des Benutzers.
    
    ...
    geolocationOptions: 
    	{
            enableHighAccuracy: true;
        }
    function getLocation() {
        if (navigator.geolocation) {
            navigator.geolocation.watchPosition(showPosition);
        } else { 
            x.innerHTML = "Геолокация не поддерживается данным браузером или устройством.";
        }

    Wie Sie von hier aus sehen können, ist alles sehr einfach. Hier hat mir die watchPosition-Methode sehr geholfen, die mehr als einmal funktioniert, wie getCurrentPosition, aber sie funktioniert ständig, wenn sich die Benutzerkoordinaten ändern. Daher hat es sich als äußerst praktisch erwiesen, Inhalte in Abhängigkeit von der Position anzuzeigen.
    Der nächste Punkt ist nur die Überprüfung der Koordinaten. Ich habe lange darüber nachgedacht, wie das geht? Zuerst war ich beeindruckt von dem Gedanken, die Genauigkeit des angezeigten Ortes ausreichend zu vergröbern. Diese Methode erwies sich jedoch als ungeeignet, da es sich als schwierig herausstellte, einen Fehler zu wählen, der den gewünschten Radius ergibt, und ich lehnte dies ab.
    Dann begann ich in Richtung der Konturen zu denken, die den Bereich auf dem Boden umrissen. Aber das würde den Code sehr komplizieren und beschweren, und ich lehnte diese Idee ebenfalls ab.
    Die dritte Lösung erschien mir am einfachsten und richtigsten. Es wird in der folgenden Codezeile ausgedrückt:
    var data = ; //вывод массива полученных из БД данных

    Was sich letztendlich in einen Code der Form verwandelt:
    var data = [["293","51.6569823","51.6583003","39.2145828","39.2174366"],["294","51.630048","51.630752","39.156333","39.157132"],["295","51.693474","51.693709","39.20857","39.209728"],["296","51.6704160","51.6718383","39.2093698","39.2117104"],["297","51.6644532","51.6647234","39.2065102","39.2066389"],["298","51.6640640","51.6645244","39.2074646","39.2079206"],["300","51.6664147","51.6669751","39.2019236","39.2021328"],["301","51.6624973","51.6629277","39.2063693","39.2069325"],["302","51.6610044","51.6621621","39.2011539","39.2019854"],["303","51.6735303","51.6739639","39.2071490","39.2077873"],["304","51.6644936","51.6652675","39.2038072","39.2049820"],["305","51.6715535","51.6722906","39.2086361","39.2097626"],["306","51.6615435","51.6622841","39.1990161","39.1997027"],["308","51.6554642","51.6559213","39.1859334","39.1865128"],["312","51.6735318","51.6740154","39.2113578","39.2124253"],["313","51.6758248","51.6762417","39.2107791","39.2114228"],["315","51.7115548","51.7120380","39.2272416","39.2277244"],["316","51.7564548","51.7572128","39.1742317","39.1752658"],["434","51.6659232","51.6664169","39.2051209","39.2057968"],["435","51.7064638","51.7071071","39.1711776","39.1726474"]];

    Wie Sie sehen können, ist dies nur ein Satz von Koordinaten und ID-Artikeln.
    Und hier werden bereits alle wichtigen Dinge erledigt:
    function showPosition(position) {
    			for (i = 0; i < data.length; i++) {
    				if ((position.coords.latitude >= data[i][1] && position.coords.latitude <= data[i][2]) && (position.coords.longitude >= data[i][3] &&  position.coords.longitude <= data[i][4]))
    				{
    					showArticle(data[i][0]);
    					x.innerHTML = ("

    Мы обновим и отобразим для Вас информацию о следующем памятнике, когда Вы будете с ним рядом.

    "); } } }

    Zusammenfassend wird also jedes Mal, wenn wir die Koordinaten ändern, das gesamte Array durchsucht und die aktuellen Werte mit denen im Array verglichen. Wenn der Benutzer also das Rechteck eingibt, das wir beim Erstellen des Etiketts angegeben haben, lädt das Skript den Artikel automatisch aus der Datenbank. Natürlich mit Ajax so einfach:
    function showArticle(str) {
    	if (str == "") {
    	   document.getElementById("txtHint").innerHTML = "";
    	   return;
    	} else { 
    	    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("txtHint").innerHTML = xmlhttp.responseText;
    	        }
    	    }
            xmlhttp.open("GET","getArticle.php?q="+str,true);
    	    xmlhttp.send();
    	}
    }

    Das oben beschriebene Verfahren hat natürlich offensichtliche Nachteile.

    In dem hervorgehobenen Rechteck befindet sich ein Denkmal für die Opfer des Bombenanschlags im Pioniergarten. Aber irgendwie anders zu kennzeichnen, damit die daneben stehenden Häuser nicht in dieses Gebiet fallen, ist mit diesem Ansatz einfach unmöglich. In diesem Fall ist dies jedoch glücklicherweise nicht wichtig, da die Dichte der Denkmäler pro Flächeneinheit in der Regel äußerst gering ist und dies daher nicht schadet.
    Eine weitere Schwierigkeit sind die Probleme der Navigationstechnologie. Manchmal gibt es überraschend große Fehler. So befindet sich das Denkmal für S. Jesenin etwa fünfhundert Meter vom Denkmal für A. Koltsov entfernt. Aber wegen der umliegenden Gebäude kann man zuweilen anstelle von S. Yesenin Informationen über A. Koltsov sehen.
    Trotzdem wird der "Guide" ins Leben gerufen und bereits von Einwohnern und Besuchern der Stadt genutzt. Die Arbeiten zur Verbesserung werden fortgesetzt. Über konstruktive Kritik und Anregungen würde ich mich freuen.
    Den "Leitfaden" selbst finden Sie unter folgendem Link: www.okrae.odbvrn.ru/guide
    Ich glaube, Sie können die Überprüfung hiermit abschließen . Ich hoffe, dass die Informationen für die Community nützlich sind.
    UPD: lokales Fernsehvideo
    UPD 2: Wir werden bald eine neue Version herausbringen. Dieser ist schon alt.

    Jetzt auch beliebt: