Maison > Article > interface Web > Utiliser la géolocalisation pour obtenir des informations de localisation géographique
Cette fois, je vais vous apporter les précautions concernant l'utilisation de la Géolocalisation pour obtenir des informations de localisation géographique. Voici des cas pratiques, jetons-y un œil.
Html5 fournit une API pour les informations de localisation géographique afin d'obtenir la position actuelle de l'utilisateur via le navigateur. Sur la base de cette fonctionnalité, des applications de services basées sur la localisation peuvent être développées. Avant d'obtenir des informations de localisation géographique, le navigateur demandera d'abord à l'utilisateur s'il souhaite partager ses informations de localisation, et celles-ci ne pourront être utilisées qu'après l'accord de l'utilisateur.
Html5 obtient des informations de localisation géographique via l'API de géolocalisation, en utilisant sa méthode getCurrentPosition. Cette méthode comporte trois paramètres, qui sont exécutés lorsque les informations de localisation géographique sont obtenues avec succès. Fonction de rappel, la fonction de rappel et les éléments de configuration d'attribut facultatifs exécutés en cas d'échec.
La démo suivante montre l'obtention d'informations de localisation géographique via la géolocalisation et l'affichage de l'emplacement actuel sur Baidu Map (en appelant l'API Baidu Map). Les résultats expérimentaux ont montré que l'emplacement était situé à l'entrée de la 4ème route de Huandong dans la ville universitaire. L'écart par rapport à mon emplacement (le dortoir des étudiants de HuaGong) est encore un peu grand, atteignant environ 200 à 300 mètres.
Le code est le suivant (convertor.js est le fichier de conversion de coordonnées fourni par Baidu Maps) :
<!DOCTYPE html> <html> <head> <title>H5地理位置Demo</title> <script src="http://api.map.baidu.com/api?v=1.3" type="text/javascript"> </script> <script type="text/javascript" src="convertor.js"> </script> </head> <body> <p id="map" style="width:600px; height:400px"> </p> </body> <script type="text/javascript"> if (window.navigator.geolocation) { var options = { enableHighAccuracy: true, }; window.navigator.geolocation.getCurrentPosition(handleSuccess, handleError, options); } else { alert("浏览器不支持html5来获取地理位置信息"); } function handleSuccess(position){ // 获取到当前位置经纬度 本例中是chrome浏览器取到的是google地图中的经纬度 var lng = position.coords.longitude; var lat = position.coords.latitude; // 调用百度地图api显示 var map = new BMap.Map("map"); var ggPoint = new BMap.Point(lng, lat); // 将google地图中的经纬度转化为百度地图的经纬度 BMap.Convertor.translate(ggPoint, 2, function(point){ var marker = new BMap.Marker(point); map.addOverlay(marker); map.centerAndZoom(point, 15); }); } function handleError(error){ } </script> </html>
fichier convertor.js :
(function() { // 闭包 function load_script(xyUrl, callback) { var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = xyUrl; // 借鉴了jQuery的script跨域方法 script.onload = script.onreadystatechange = function() { if ((!this.readyState || this.readyState === "loaded" || this.readyState === "complete")) { callback && callback(); // Handle memory leak in IE script.onload = script.onreadystatechange = null; if (head && script.parentNode) { head.removeChild(script); } } }; // Use insertBefore instead of appendChild to circumvent an IE6 bug. head.insertBefore(script, head.firstChild); } function translate(point, type, callback) { var callbackName = 'cbk_' + Math.round(Math.random() * 10000); // 随机函数名 var xyUrl = "http://api.map.baidu.com/ag/coord/convert?from=" + type + "&to=4&x=" + point.lng + "&y=" + point.lat + "&callback=BMap.Convertor." + callbackName; // 动态创建script标签 load_script(xyUrl); BMap.Convertor[callbackName] = function(xyResult) { delete BMap.Convertor[callbackName]; // 调用完需要删除改函数 var point = new BMap.Point(xyResult.x, xyResult.y); callback && callback(point); } } window.BMap = window.BMap || {}; BMap.Convertor = {}; BMap.Convertor.translate = translate; })();
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !
Lecture recommandée :
Explication détaillée de l'utilisation de la requête de pagination
Explication détaillée de l'utilisation des panneaux pliables dans JS
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!