| Россия |
Geolocation API
Геолокация определяет интерфейс информации о местоположении. Обычно, источником информации о местоположении является GPS. Помимо GPS определить местоположение могут помочь также компьютерные сети (по IP-адресу), а также адреса Wi-Fi, Bluetooth MAC и идентификаторы сетей GSM/CDMA. Интерфейс Geolocation реализуется с помощью экземпляра объекта Navigator. Информация о местоположении объекта предоставляется в виде координат широты и долготы. Интерфейс Geolocation позволяет получать информацию о местоположении объекта в виде моментального снимка с помощью метода getCurrentPosition() или повторяющихся запросов на обновление местоположения методом watchPosition(). Оба метода используют следующие параметры:
- Обработчик success срабатывает в случае успешного получения информации о местоположении,
- Обработчик error срабатывает тогда, когда попытка определения координат заканчивается неудачей
- Объект Options, который хранит дополнительные свойства:
- enableHighAccuracy – позволяет определять местоположение с высокой точностью
- timeout – определяет максимальную продолжительность времени, проходящего с момента вызова до срабатывания обработчика success.
- maximumAge – показывает, что приложение может получать кэшированную информацию о местоположении, чей возраст не превышает заданного промежутка времени.
Местоположение объекта представляется в виде десятичных градусов широты и долготы в системе WGS-84.
Далее, мы познакомимся с примером геопозиционирования, предоставленным компанией Samsung (http://download.tizen.org/misc/examples/w3c_html5/location/geolocation_api_specification/)
Пример. Приложение, определяющее местоположение объекта
Файл index.html:
<!DOCTYPE html>
<!-- saved from url=(0116)http://download.tizen.org/misc/examples/w3c_html5/location/geolocation_api_specification/geolocation%20tutorial.html -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<meta name="description" content="Tizen Tutorial - Geolocation API">
<title>Tizen Tutorial - Geolocation API</title>
<link rel="stylesheet" type="text/css" href="./Tizen Tutorial - Geolocation API_files/style.css">
<script>
// Holds information that uniquely identifies a watch operation.
var watchId;
function successCallback(position) {
document.getElementById("locationInfo").innerHTML = "Latitude: " +
position.coords.latitude + "<br>Longitude: " + position.coords.longitude;
}
function errorCallback(error) {
var errorInfo = document.getElementById("locationInfo");
switch (error.code) {
case error.PERMISSION_DENIED:
errorInfo.innerHTML = "User denied the request for Geolocation.";
break;
case error.POSITION_UNAVAILABLE:
errorInfo.innerHTML = "Location information is unavailable.";
break;
case error.TIMEOUT:
errorInfo.innerHTML = "The request to get user location timed out.";
break;
case error.UNKNOWN_ERROR:
errorInfo.innerHTML = "An unknown error occurred.";
break;
}
}
function oneShotFunc() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(successCallback, errorCallback);
} else {
document.getElementById("locationInfo").innerHTML =
"Geolocation is not supported.";
}
}
function watchFunc() {
if (navigator.geolocation) {
watchId = navigator.geolocation.watchPosition(successCallback,
errorCallback);
} else {
document.getElementById("locationInfo").innerHTML =
"Geolocation is not supported.";
}
}
function stopWatchFunc() {
if (navigator.geolocation) {
navigator.geolocation.clearWatch(watchId);
} else {
document.getElementById("locationInfo").innerHTML =
"Geolocation is not supported.";
}
}
</script>
<style></style></head>
<body>
<header>
<hgroup>
<h1>Geolocation tutorial</h1>
</hgroup>
</header>
<article>
<p><b>Actual position: </b><br>
<span id="locationInfo">Latitude: 54.7951545715332<br>Longitude: 56.04096603393555</span></p>
<input type="button" id="oneShot" value="One shot position" onclick="oneShotFunc()" style="width: 32%">
<input type="button" id="watchPos" value="Watch my position" onclick="watchFunc()" style="width: 32%">
<input type="button" id="stopWatchPos" value="Stop watch" onclick="stopWatchFunc()" style="width: 32%">
</article>
</body>
</html>
Файл style.css:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Object not found!</title>
<link rev="made" href="mailto:webmaster@tizen.org" />
<style type="text/css"><!--/*--><![CDATA[/*><!--*/
body { color: #000000; background-color: #FFFFFF; }
a:link { color: #0000CC; }
p, address {margin-left: 3em;}
span {font-size: smaller;}
/*]]>*/--></style>
</head>
<body>
<h1>Object not found!</h1>
<p>
The requested URL was not found on this server.
The link on the
<a href="http://download.tizen.org/misc/examples/w3c_html5/location/geolocation_api_specification/geolocation%2520tutorial.html">referring
page</a> seems to be wrong or outdated. Please inform the author of
<a href="http://download.tizen.org/misc/examples/w3c_html5/location/geolocation_api_specification/geolocation%2520tutorial.html">that page</a>
about the error.
</p>
<p>
If you think this is a server error, please contact
the <a href="mailto:webmaster@tizen.org">webmaster</a>.
</p>
<h2>Error 404</h2>
<address>
<a href="/">download.tizen.org</a><br />
<span>Apache</span>
</address>
</body>
</html>
Задание:
Преобразуйте географические координаты объекта в координаты Меркатора
