Eine beliebtere Art von Service wird als standortbasierter Service (LBS) bezeichnet. Diese Art von Service ist die Informationen, die Unternehmen in der Nähe der Koordinaten eines bestimmten Punktes (z. In HTML5 wurde eine neue Geolocation -API hinzugefügt, um Geolokalisierung zu bestimmen und zu teilen.
DatenschutzaussagePrivatsphäre ist ein Problem, wenn Sie einen physischen Standort mit einem Remote -Webserver teilen. In der Geolocation -API muss der Benutzer Berechtigungen erteilt, bevor die Webanwendung auf die Standortinformationen zugreifen kann. Wenn Sie zum ersten Mal auf eine Webseite zugreifen, auf der Geolokalisierungsdaten angefordert werden, zeigt der Browser eine Benachrichtigungsleiste an, die Sie dazu veranlasst, Zugriff auf den Standort des Benutzers zu gewährleisten. Befolgen Sie die Eingabeaufforderungen des Browsers und wählen Sie die entsprechende Autorisierung aus.
Wenn der Benutzer keine Berechtigungen gewährt, werden der Webanwendung keine Standortinformationen zur Verfügung gestellt. Das Aufrufen der relevanten API löst keinen erfolgreichen Rückruf aus.
Überprüfen Sie den BrowserunterstützungDie Geolocation -API wird in der neuesten Version von Mainstream -Browsern unterstützt. Um jedoch mit alten Browsern kompatibel zu sein, müssen Sie sie noch ausprobieren. Wenn die Geolocation -API nicht verfügbar ist, ist window.navigator.geolocation wie folgt null:
Funktion show_islocationEnabled ()
{
var str = "Nein, Geolokalisierung wird nicht unterstützt.";
if (window.navigator.geolocation) {
str = "Ja, Geolokalisierung wird unterstützt.";
}
Alarm (str);
}
Die Geolocation -API basiert auf einer neuen Eigenschaft des globalen Navigationsobjekts: Navigator.Geolocation, das einige nützliche Informationen über den Browser und das System des Besuchers liefert. Geolokalisierungsinformationen können mit vielen Mitteln erhalten werden: wie Basisstationen, Webdatenbanken oder GPS. Die Genauigkeit von Geolokalisierungsinformationen, die unter Verwendung verschiedener Methoden erhalten wurden, ist ebenfalls unterschiedlich. Im Allgemeinen wird das genaueste über GPS erhalten (das meiste GPS wird auf mobilen Plattformen verwendet, und die PC -Plattform stützt sich grundsätzlich auf Netzwerkdaten). An einigen Orten können Sie möglicherweise keine klaren geografischen Standortwerte oder keine Daten erhalten.
Positionieren Sie den aktuellen StandortVerwenden Sie die GetCurrentPosition () -Methode der Navigation.Geolocation, um den aktuellen Standort des Benutzers zu erhalten. Diese Methode erhält die Standortinformationen nur einmal. Wenn die Methode vom Skript aufgerufen wird, versucht die Methode, den aktuellen Standort des Host -Geräts asynchron zu erhalten.
Methodensignatur: GetCurrentPosition (Geolocationsuccesscallback, [GeolocationErrorCallback, Geolococationoptions]);
1. Geolocationsuccesscallback: Holen Sie sich den Rückruf, nachdem der aktuelle Standort erfolgreich ist (erforderlich)
2. GeolococationErrorcallback. Rückruf verwendet, wenn ein Fehler auftritt (optional)
3. Geolokalisiertoptionen. Geolokationsoptionen (optional)
Information von Standortinformationen
Nachdem die GetCurrentPositon () -Methode die aktuelle Position erfolgreich erhalten hat, speichert sie die Positionsinformationen in einem Positionsobjekt und verwendet dieses Objekt dann als Parameter, um den Rückruf von Geolocationsuccesscallback auszuführen. In dieser Rückruffunktion können Sie die in diesem Objekt enthaltenen Informationen willkürlich verarbeiten.
Das Positionsobjekt verfügt über zwei Eigenschaften: Zeitstempel und Koordnungen. Das Timestamp -Attribut repräsentiert die Erstellungszeit von Geolokalisierungsdaten, und das Koordinierungsattribut repräsentiert Geolokalisierungsinformationen und enthält sieben Attribute:
.Coords.Latitude: Schätzen Sie den Breitengrad
. Koordnungen
.Coords.ALTitude: Geschätzte Höhe
. Koordnungen.Accuracy: Die Genauigkeit der Längen- und Breitengradschätzungen in Messgeräten
.Coords.ALTITUDEACCURACE: Die Genauigkeit der in Metern bereitgestellten Höhenschätzungen
. Koordinaten.Heading: Die Winkelrichtung des derzeit bewegten Hostgeräts, berechnet im Uhrzeigersinn relativ zur Nordrichtung
.coords.speed: Die aktuelle Bodengeschwindigkeit des Geräts in Metern pro Sekunde
Im Allgemeinen sind drei dieser Eigenschaften garantiert: Koordnungen. Dies hängt von den Funktionen des Geräts und dem von ihm verwendeten Backend -Positionierungsserver ab. Darüber hinaus können Überschriften- und Geschwindigkeitseigenschaften basierend auf der vorherigen Position des Benutzers berechnet werden.
HandhabungsfehlerWenn bei der Ausführung der Methode getCurrentPositon () ein Fehler auftritt, übergibt die Methode ein PositionError -Objekt an den GeolococationErrorCallback -Rückruf.
Setzen Sie GeolokationsoptionenSie können drei Eigenschaften von Geolococationoptions festlegen:
EnableHighaccuracy: Wenn das Gerät eine hohe Genauigkeit unterstützt, gibt diese Option an, ob eine hohe Genauigkeit aktiviert ist.
Timeout: Abfragen von Zeitüberschreitungen
Maximum: Die maximale Anzahl der Cache, in denen sich der Cache befindet, in dem der Cache verwendet werden kann.
Siehe das vollständige Beispiel unten:
<! DocType html>
<html>
<body>
<p id = "Demo"> Klicken Sie auf die Schaltfläche, um Ihre Position zu erhalten: </p>
<button onclick = "getLocation ()"> versuchen Sie es </button>
<div id = "maximal"> </div>
<Script>
var x = document.getElementById ("Demo");
Funktion getlocation () {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition (Showposition, Duschror);
}
anders{
X.innerhtml = "Geolokalisierung wird von diesem Browser nicht unterstützt.";
}
}
Funktionshowposition (Position) {
var latlon = Position.coords.latitude+","+Position.coords.longitude;
var img_url = "http://maps.googleapis.com/maps/api/staticmap?center=" +
latlon + "& zoom = 9 & size = 400x300 & sensor = false";
document.getElementById ("maeholder"). innerhtml = "<img src = '"+img_url+"' />";
}
Funktion Duschror (Fehler) {
Switch (error.code) {
Fallfehler.Permission_Denied:
X.innerhtml = "Der Benutzer hat die Anfrage zur Geolokalisierung abgelehnt."
brechen;
Fallfehler.position_unavailable:
X.innerhtml = "Standortinformationen sind nicht verfügbar."
brechen;
Fallfehler.Timeout:
X.innerhtml = "Die Anfrage zum Ablauf des Benutzers."
brechen;
Fallfehler.Unnown_error:
X.innerhtml = "Es ist ein unbekannter Fehler aufgetreten."
brechen;
}
}
</script>
</body>
</html>
Dieses Beispiel belegt den geografischen Standort des aktuellen Geräts und zeigt es in Google Maps an. Natürlich können Sie die statische Graph -Version in der Baidu Maps -API verwenden, um dieses Beispiel zu transformieren. Für die Baidu Map -API finden Sie später den Link in der praktischen Referenz.
Einschalten/Stornieren Sie die kontinuierliche PositionierungVerwenden Sie die Navigationsmethode für die Uhren- () -Gigation, um den Standort des Benutzers regelmäßig zu befragen, um festzustellen, ob sich der Standort des Benutzers geändert hat. Diese Methode enthält drei Parameter: Diese drei Parameter entsprechen der Methode GetCurrentPosition (), einem erfolgreichen Rückruf, einem fehlgeschlagenen Rückruf und einer Option, um Positionsinformationen zu erhalten. Diese Methode verfügt über einen Rückgabewert WatchID, mit dem die kontinuierliche Positionierung abgesagt wird.
Verwenden Sie die Navigationsmethode clearwatch (). GEOLOCADION, um die laufende Uhrenzucht () zu beenden, die nur einen Parameter WatchID benötigt.
Siehe das folgende Beispiel:
<! DocType html>
<html>
<kopf>
<title> Geolocation API Beispiel: Anhören von Standort -Updates </title>
<meta http-äquiv = "x-ua-kompatible" content = "ie = 9" />
<script type = "text/javaScript">
Funktion setText (val, e) {
document.getElementById (e) .Value = val;
}
var nav = null;
var watchid;
Funktion hörerpositionupdates () {
if (nav == null) {
Nav = Fenster.navigator;
}
if (nav! = null) {
var geoloc = nav.geolocation;
if (geoloc! = null) {
watchId = geoloc.watchPosition (SuccessCallback);
}
anders {
alarm ("Geolokalisierung nicht unterstützt");
}
}
anders {
alarm ("Navigator nicht gefunden");
}
}
Funktion clearWatch (watchId) {
window.navigator.geolocation.clearWatch (WatchID);
}
Funktion SuccessCallback (Position)
{
setText (Position.coords.Latitude, "Latitude");
setText (Position.coords.longitude, "Longitude");
}
</script>
</head>
<body>
<label für = "latitude"> latitude: < /label> <input id = "latitude" />
<label für = "longitude"> longitude: < /label> <input id = "longitude" />
<input type = "button" value = "Watch Latitude and Longitude" Onclick = "Hörenpositionupdates ()" />
<Eingabe type = "Button" value = "Watch" onclick = "clearWatch ()" />
</body>
</html>
Praktische Referenz:Offizielles Dokument: http://www.w3schools.com/html5/html5_geolocation.asp
Vorlage Sorgen: http://www.cuoxin.com/w3school/html5/
Microsoft Hilfe: http://msdn.microsoft.com/zh-cn/library/gg589502(v=vs.85)
Baidu Map API: http://dev.baidu.com/wiki/static/index.htm