Maison > interface Web > Tutoriel H5 > le corps du texte

Utiliser la géolocalisation pour obtenir des informations de localisation géographique

php中世界最好的语言
Libérer: 2018-03-26 11:46:23
original
1756 Les gens l'ont consulté

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>
Copier après la connexion

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;
})();
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal